{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "X,y=datasets.make_moons()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 2)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100,)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6tRJXbt2jfmzX3/99TrzzDPVs2dP/fnPf9asWbO0efNmvfzyy04POSX27Nmj5ubmiMfEpk2bIr7G7/d78hhqz77q37+/nn76aZ177rlqaGjQwoULNWLECK1fv97xBq1uE+24CgQC+uqrr3TiiSemaWTmKS4u1pIlSzRs2DA1NTXpl7/8pS677DKtXr1a559/frqHlzLBYFAzZ87UhRdeqEGDBkXdLh0xy3PJy+zZs3X//ffH3Gbjxo0aMGBAikZkNrv7q72+PSfmnHPOUXFxsUaOHKktW7aoX79+7X5feENZWZnKysrCfx8xYoTOPvts/ed//qfuvffeNI4Mbta/f3/1798//PcRI0Zoy5YteuSRR/Rf//VfaRxZat12221at26d3nvvvXQPpQ3PJS933nmnbrzxxpjb9O3bt13vXVRUJEmqr69XcXFx+Pn6+noNGTKkXe+Zbnb3V1FRUZtJlV9//bX27dsX3i92lJaWSpI++eSTjEheunXrppycHNXX17d6vr6+Pup+KSoqSmj7TNGefXW8E044Qeedd54++eQTJ4boatGOq/z8fK662DB8+HAjv8SdMn369PDCi3hXMdMRszw356V79+4aMGBAzEdubm673rtPnz4qKipSdXV1+LlAIKDVq1e3+t+hm9jdX2VlZdq/f79qa2vDr125cqWCwWA4IbGjrq5Oklolf26Wm5uroUOHtjomgsGgqqurox4TZWVlrbaXpBUrVrj2GLKrPfvqeM3Nzfr4448z5vhJJq8eV8lSV1fniePKsixNnz5dy5cv18qVK9WnT5+4r0nLseXYVOAM8Pnnn1sfffSRtWDBAuuUU06xPvroI+ujjz6yDhw4EN6mf//+1ssvvxz++3333Wd16dLFevXVV60///nP1jXXXGP16dPH+uqrr9LxI6TU6NGjrfPOO89avXq19d5771l/93d/Z02YMCH873/729+s/v37W6tXr7Ysy7I++eQT6yc/+Yn14YcfWlu3brVeffVVq2/fvtYll1ySrh/BEc8//7zl8/mspUuXWhs2bLBuueUWq0uXLpbf77csy7JuuOEGa/bs2eHt//jHP1qdOnWyFi5caG3cuNGaP3++dcIJJ1gff/xxun6ElEl0Xy1YsMB66623rC1btli1tbXWddddZ+Xl5Vnr169P14+QMgcOHAjHJEnWww8/bH300UfW559/blmWZc2ePdu64YYbwtt/+umn1kknnWTddddd1saNG63FixdbOTk5VlVVVbp+hJRJdF898sgj1iuvvGL99a9/tT7++GNrxowZVnZ2tvX73/8+XT9CykybNs0qKCiwVq1aZe3atSv8OHToUHgbE2IWyUsMkydPtiS1ebz99tvhbSRZv/71r8N/DwaD1ty5c63CwkLL5/NZI0eOtDZv3pz6wafB3r17rQkTJlinnHKKlZ+fb02ZMqVVord169ZW+2/btm3WJZdcYnXt2tXy+XzWWWedZd11111WQ0NDmn4C5zz22GPWGWecYeXm5lrDhw+3/vSnP4X/7dJLL7UmT57cavsXXnjB+vu//3srNzfX+s53vmO98cYbKR5x+iSyr2bOnBnetrCw0LrqqqustWvXpmHUqRdaznv8I7R/Jk+ebF166aVtXjNkyBArNzfX6tu3b6vYlckS3Vf333+/1a9fPysvL8/q2rWrddlll1krV65Mz+BTLNJ+Ov57zoSYlXVssAAAAK7guTkvAADA3UheAACAq5C8AAAAVyF5AQAArkLyAgAAXIXkBQAAuArJCwAAcBWSFwAA4CokLwAAwFVIXgAAgKuQvAAAAFcheQEAAK7y/wH2/cM6pTvs1wAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0],X[y==0,1])\n",
    "plt.scatter(X[y==1,0],X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#加入扰动\n",
    "X,y=datasets.make_moons(noise=0.15,random_state=666)\n",
    "plt.scatter(X[y==0,0],X[y==0,1])\n",
    "plt.scatter(X[y==1,0],X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用多项式特征的SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures,StandardScaler\n",
    "from sklearn.svm import LinearSVC\n",
    "from sklearn.pipeline import Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def polynomialSVC(degree,C=1):\n",
    "    return Pipeline([\n",
    "        (\"poly\",PolynomialFeatures(degree=degree)),\n",
    "        (\"std\",StandardScaler()),\n",
    "        (\"linearSVC\",LinearSVC(C=C))\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;poly&#x27;, PolynomialFeatures(degree=3)),\n",
       "                (&#x27;std&#x27;, StandardScaler()), (&#x27;linearSVC&#x27;, LinearSVC(C=1))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-13\" type=\"checkbox\" ><label for=\"sk-estimator-id-13\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;poly&#x27;, PolynomialFeatures(degree=3)),\n",
       "                (&#x27;std&#x27;, StandardScaler()), (&#x27;linearSVC&#x27;, LinearSVC(C=1))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-14\" type=\"checkbox\" ><label for=\"sk-estimator-id-14\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;PolynomialFeatures<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.preprocessing.PolynomialFeatures.html\">?<span>Documentation for PolynomialFeatures</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>PolynomialFeatures(degree=3)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-15\" type=\"checkbox\" ><label for=\"sk-estimator-id-15\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-16\" type=\"checkbox\" ><label for=\"sk-estimator-id-16\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;LinearSVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.svm.LinearSVC.html\">?<span>Documentation for LinearSVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LinearSVC(C=1)</pre></div> </div></div></div></div></div></div>"
      ],
      "text/plain": [
       "Pipeline(steps=[('poly', PolynomialFeatures(degree=3)),\n",
       "                ('std', StandardScaler()), ('linearSVC', LinearSVC(C=1))])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_svc=polynomialSVC(degree=3)\n",
    "poly_svc.fit(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"绘制决策边界的函数\"\"\"\n",
    "def plot_decision_boundary(model, axis):\n",
    "    x0, x1 = np.meshgrid(\n",
    "        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),\n",
    "        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1)\n",
    "    )\n",
    "    X_new = np.c_[x0.ravel(), x1.ravel()]\n",
    "    y_predict = model.predict(X_new)\n",
    "    zz = y_predict.reshape(x0.shape)\n",
    "\n",
    "    from matplotlib.colors import ListedColormap\n",
    "    custom_cmap = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])\n",
    "\n",
    "    plt.contourf(x0, x1, zz,cmap=custom_cmap)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAGiCAYAAADulWxzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABEYElEQVR4nO3de3RU9b3//9dkIJlASEIMuVFEQMWKSMALgmcVWjhFxC75tqdHLVa80eqqXVi0FE6tHlo9HDlYpT320OpRsdLrt4rni5cWo+BPCxSFHBEplcuCFpNQLrlBEmCyf3+EGTLJTOa29+zLPB9rxWUme5LPzpA97/35vN/vj88wDEMAAAAelGP3AAAAAKxCoAMAADyLQAcAAHgWgQ4AAPAsAh0AAOBZBDoAAMCzCHQAAIBnEegAAADPItABAACeRaADAAA8y9JA5+2339YXvvAFVVVVyefzac2aNX0ev379evl8vl4f9fX1Vg4TAAB4lKWBzvHjxzVu3Dg9+eSTST1v165dqqurC3+UlZVZNEIAAOBl/az85jNnztTMmTOTfl5ZWZmKi4vNHxAAAMgqlgY6qaqurlZHR4cuueQS/eu//quuvvrqmMd2dHSoo6Mj/HlnZ6eOHj2qc845Rz6fLxPDBQAAaTIMQy0tLaqqqlJOjnkLTo4KdCorK7Vy5Updfvnl6ujo0NNPP62pU6dq8+bNmjBhQtTnLF26VEuWLMnwSAEAgBX++te/6lOf+pRp389nGIZh2nfr6wf5fHrppZc0e/bspJ43ZcoUnXvuufr5z38e9es9Z3Sampp07rnn6sNHH9WgQCCdIQMAbFD8z379184b7B4GMqz9eIv+9Qsj1djYqKKiItO+r6NmdKK58sor9c4778T8el5envLy8no9PigQUGF+vpVDAwBYoLDQr0BBod3DgE3MTjtxfB+d2tpaVVZW2j0MAADgQpbO6LS2tmr37t3hz/ft26fa2lqVlJTo3HPP1eLFi3Xw4EE9//zzkqQnnnhCI0aM0JgxY9Te3q6nn35ab775pv7whz9YOUwAAOBRlgY67733nj772c+GP1+wYIEkae7cuXruuedUV1enAwcOhL9+8uRJ3XfffTp48KAGDBigSy+9VG+88UbE9wAAAEhUxpKRM6W5uVlFRUXav2IFOToA4ELFc/xaseNmu4eBDGtvbdaizw1RU1OTCgvNy9FyfI4OACC7EOTATAQ6AADHKJ7jt3sI8BgCHQAA4FkEOgAAwLMIdAAAgGcR6AAAAM8i0AEAAJ5FoAMAADyLQAcAAHgWgQ4AAPAsAh0AgGPQFRlmI9ABADgCXZFhBQIdAIAjMJsDKxDoAAAAzyLQAQAAnkWgAwAAPItABwAAeBaBDgAA8CwCHQAA4FkEOgAAwLMIdAAAgGcR6AAAAM8i0AEAAJ5FoAMAADyLQAcAAHgWgQ4AAPAsAh0AAOBZ/eweAOA1QUPa2p6rw6f9Ku0X1ITASfl9do8KALITgQ5goprWgJYdLlJD0B9+rNwf1MLSJk0raLdxZACQnVi6AkxS0xrQ/Q2D1RCM/LM6FMzR/Q2DVdMasGlkAJC9CHQAEwQNadnhIhmSpMh1KuPM58sOFypoZHxoAJDVCHQAE2xtzz2zXBU9GceQTw3BftranpvZgQFAliPQAUxw+LQ//kFJHAcAMAfJyHAtJ1U3lfYLmnocAMAcBDpwJadVN00InFS5P6hDwZxwTk53Phkq83cFYwCAzGHpCq7jxOomv09aWNokqSuo6S70+cLSZvrpAECGEejAVZxc3TStoF3Ly4+pzN8Z8XiZP6jl5cfoowMANmDpCq5ytropuu7VTVfkZ36ZaFpBu6YObHdM7hAAZDsCHbiKG6qb/D7ZEmQBAHpj6QquQnUTACAZBDpwlVB1U8+E3xCfDJX7T1PdBACQRKADl6G6CQCQDAIduA7VTQCARJGMDFeiugkAkAgCHbgW1U0AgHhYugIAAJ5FoAMAADyLQAcAAHgWgQ4AAPAsAh0AAOBZBDoAAMCzCHQAAIBnEegAAADPItABADjC/DEv2D0EeBCdkeFaQUNsAQEA6BOBDlyppjWgZYeL1BD0hx8r9we1sLSJTT0Bl2pcHdT8OS9oxY6b7R4KPISlK7hOTWtA9zcMVkMw8p/voWCO7m8YrJrWgE0jAwA4DTM6cJWgIS07XCRDkhS5TmXIJ58MLTtcqKkD21nGSlPPpcFxeSf1vx0sFQJwFwIduMrW9tyI5aqeDPnUEOynre257GyehmhLgzky1NktuGSpEIAbsHQFVzl8OnaQk8px6C3W0mBnj+NYKgTgBgQ6cJXSfkFTj0OkvpYGoy0VStKyw4UKGpkYHQAkj6UruMqEwEmV+4M6FMwJv9F255OhMn9X/ohZsqmMPd7SYE+ZXCrMptcBgHkIdOAqfp+0sLRJ9zcMlk9GRLDjOzMPsbC02bQ3wGwrY091yc/qpcJsex0AmMfSpau3335bX/jCF1RVVSWfz6c1a9bEfc769es1YcIE5eXl6fzzz9dzzz1n5RDhQtMK2rW8/JjK/JFZI2X+oJaXHzPtjS8by9hTXfKzcqkwG18HAOaxdEbn+PHjGjdunG6//XZ98YtfjHv8vn37NGvWLN11111avXq1ampqdOedd6qyslIzZsywcqhwmWkF7Zo6sN2ypYxsLWOPtzTYk9VLhSX+oB7NwtcBgHksDXRmzpypmTNnJnz8ypUrNWLECD322GOSpE9/+tN655139PjjjxPooBe/T5blhWRrGXtfS4OSIdmwVNgXr74O2YzuyDCbo6quNm7cqOnTp0c8NmPGDG3cuDHmczo6OtTc3BzxAaQr0ZyTzSdy9VpLvra05Xqm8ijW0mDPi0WmlgoTQTsBALE4Khm5vr5e5eXlEY+Vl5erublZbW1tys/P7/WcpUuXasmSJZkaIlwsmaqdRHNOnm4sDP+/l5Jjoy0NWtkZue+y9vhoJwAgFkcFOqlYvHixFixYEP68ublZw4YNs3FEcKJkq3bi56qEpm/Ofi2UHLtc5s1y2Cna0qBdS4WxGSo3OUfISpTIA5nnqECnoqJCDQ0NEY81NDSosLAw6myOJOXl5SkvLy8Tw4NLhZZEeq4s9RWYxM9VkUiONU9qS09dr8M1BW2u+F1TIg/Yw1E5OpMmTVJNTU3EY+vWrdOkSZNsGhHcLl71lBS7s2+sXJWu7xP9nbV7ciwSl9rSU9dr8HprvuPzoyiRT07japYiYR5LA53W1lbV1taqtrZWUlf5eG1trQ4cOCCpa9nplltuCR9/1113ae/evVq4cKH+/Oc/6yc/+Yl+85vf6Fvf+paVw4SHnV0SSS0wmVbQrleHN+ipqsNaWnZM84pbEvq5JMcmJ7RU6Os17xaP8wPLdILtbDZ/zAt2DwEeYWmg895772n8+PEaP368JGnBggUaP368HnzwQUlSXV1dOOiRpBEjRuiVV17RunXrNG7cOD322GN6+umnKS1HyszYBDSUqzJzUJuuHNCR0Pc7EszhjSsJoaVCSSkEO84OLNMNtrMVszowi6U5OlOnTpVhxL5oRet6PHXqVG3bts3CUSGbmL0JaKIN9ZYfKdLPGwvIv0jCtIJ2LdexpProhDi56sqMYBtA6hyVowOYLd6SiE+Gyv2nE67a6XvmIfJz8i+S13Op8KeVh1Vm4utnB7ODbQDJIdCBp/UVmKTa2bfvJOWzyL9ITfelwokDTuo7Jr9+mWZ2sA0gOQQ68DwrNgENzTzcf05Tn8eRf5G+TG3iahUrgm0AiXNUHx3AKlZsAur3Sef0mtWJjvyL9Fi9iavVYuUflfmDWlja7PhgDXAzAh1kDSs2ASX/InOs3MQ1E9werNlh/hg290T6CHSANMSrwvLJUJmLtiiAtdwerGVa4+qgVG33KOB25OgAaSD/AkFD2tLmvV3sAa9gRgdIkxvyL9hM0hrsXwU4H4EOYAIn519Y9Wac7cFTKpvFInnk6SBdBDqASZyYf2HVm3G2z2TE27+KXezN07g6qPlzCHaQOnJ0AI+yajNJL+/EnWi+DftXAe7BjA7gUWffjKPr/mac6EyUl2cykpmlYv8qwD2Y0QFS5PRqGyvejL06k5HsLBX9kwD3YEYHruGk5Fc35KhY8WbsxZmMVGap6J8EuAczOjCF1bMbNa0BXbu/XPM+KdXiQ4M175NSXbu/3JZ8ELfkqITejHvuqn6WIclQ4+nELwNenMlIZZaK/kmZ1bjaPf+e4DwEOkib1UGIkwILqxJ8reD3SfeXhjYdjTagrvEuP5L4eL24E3eqs1Ru32zUbeaPecHuIcClWLpCWqzuJeK05FcrEnytVOzvVKyZii7JjTc0k3F/w2D5ZEQs27h1JiOdWSon908C0IUZHaQsE7MbTkt+dVuOihXj9dpMRrqzVKH+STMHtemKfIIcwGmY0UHKMjG7kegb8KFTfm2R9XfVbstRsWq8XprJ8OIsFYCzCHSQskzMbiT6Brz8SKGOdVpfAeW2ahsrx+vETtCpcsN+ZdmODslIFYEOUpaJ2Y14b9ShJNtjndETlc3eb8htd/9OHa+TWgWEeGmWyqsaVwelartHAbch0EEvib4JZWJ2o6836shKoswlKrvt7t9p43VyDyIvzVIB6EKggwjJvAllarYg1hv14JzOiOWqnqysgHLb3b9TxsuO3wAyjUAHYam8CWVqtiDaG/Wh035999DguM+1qgLKbXf/do/Xaa0C4E7zx5Cng+QQ6EBSem9CmZot6PlGvaUtsZJyp1RAZTu39SCCM5Gng2QR6EBS+m9CdswWuK0CKtu5rQcRAG+gYSAkufNNiP2G3MVtPYgAeAOBDiS5903Ia116vcyL+2QBcD6WriDJ3ctATqkoQt+c2tMHgLcxowNJ7l8GYr8hdzB7Bi5odCWlv9aSry1tuY7YNR7WYydzJIMZHYQ5rbEcvMmsGTgnNx6EtdgOAskg0EEEloGQCelW6dF4EECiCHSyULwtHuxuLAf0hcaDAJJBoJNlmO6H29F4EEAySEbOIqHp/oZg9J2+a1oDNo0MjmB0ql/HbvU/sU39OnZLRmf859jAjT2fYL7G1UGSkpEQZnSyBNP96Ev/tu3Kb1yjnM6m8GOdOUVqK56tU/ljbRxZb27t+QTAHszoZImz0/3Ro5ju0/3ILv3btmvA0VXydQtyJMnX2aQBR1epf9t2m0YWHY0HASSDQCdLMN2PqIxO5TeukdQ7BA59nt/0sqOWsdze8wlAZhHoZAmm+xFNv5N7ldPZFGOeryvYyQk2qt/JvZkcVlxs/QHpzE7mQBzk6GQJN2/xAOv4gi2mHpdJ9HyCJM2tXaVV1XPtHgYcjEAnS7DPEKIx/INMPS7T6PkEIB6WrrII0/3o6XTuSHXmFMVI65UMSZ3+Yp3OHZnJYQGe5TOCGnrkXV148EUNPfKufAbLb1ZjRifLuHG6P14nZ6TBl6O24tkacHSVDEUmJIeCn7ai6yUf90RAukbVrdWUj76rQe2fhB9rCVRpw8WPaE/ldTaOzNsIdLKQm6b76eRsvVP5Y3WiZK7yG9dElJgb/mK1FV3vuD46gBuNqlurWVtvl3rMnxa012nW1tv1yoRnbAl2fEZQVUc3aWB7g44HyvVJyVUyfN6qviXQgWOxcWPmnMofq1OBMep3cq98wRYZ/kFdy1XM5MAF5o9x9k7mPiOoKR99V4pSChLKmZzy0QPaWzEzo0FGtswwcRWDI8Xr5CxJyw4XKhgruQTJ8+XodN75OjVgvE7nnU+QA9dwepl51dFNGtT+SR9tHAwNaj+oqqObMjam0AxTQbcgRzo7wzSqbm3GxmI1rmRwJDo5A/CKge0Nph6XrngzTJI05aMHPJMoTaADR6KTMwCvOB4oN/W4dDlxhslKBDpwJDo5w2pBQ9rSlqvXWvK1pS2XZVCXc/JO5p+UXKWWQFXUZq1S17xKS2CoPim5KiPjcdoMk9VIRoYj0ckZVqKaz3saVwelartHEZ3h82vDxY9o1tbbZcgXsUdb6Pq24eKHM5aI7LQZJqsxowNHYuNGWCVUzdcQjLz8har5aloDNo0M6XLyrM6eyuv0yoRn1BqojHi8NVCV8dJyp80wWY0ZHTjWtIJ2LdexXnfeZf6gFpY2c+eNpMWr5vPJ0LLDhZo6sJ0gGqbbU3md9lbMtL1vjdNmmKxGoANHc3on5+I51l8InF466yZnq/mi617N55ammnAXw+fXwXOutnsY4Rmmnn10WgNV2nDxw57qo0OgA8dzaifn4jn+jDQpmz/nBYIdk1DNB5zllBkmqxHoAH3oM5jZkZkxrNhxc8wky/ljCIKSQTUfEMkpM0xWItDJImyOGV/PpahMtZVPdb+ZFTtu1vw5kQmYBD6xUc3nbY2rg5o/x9nbQSDzCHSyBOW08a2qnpuxWZru0t1vptdFvVqaW7vK5FF6Q6ia7/6GweE9hkKo5gO8iUAnC7A5ZnSZyrHpS7wdjTdeuFBNA0YmvXa+qnpu+P9Z3opkVzUfM6qAPQh0PI5y2kjdl6bsDnLi72gsTf7Lo+HHUt1VuOfyFkGPedV8iQYvzKgC9iHQ8bhEy2lXHh2kKwd0ePou0wkzON2F9puJpefLEJrlSaW5WPfzpoqrS7rVfIkGL8yodmN0qt/JvfIFW2T4B+l07kjJR99aWItAx+MSLZN9qnGQnmoc5Mm7zHCAY0P+TV+S3UcmlFMy5aMHtLdiZsoloD2ruMjnSV6iwQszqmf1b9uu/MY1yulsCj/WmVOktuLZOpU/1saRwesIpT0u2TJZL7XBL57jd9wsTnep7CNjxa7Cod8TEhMveJGkZYcLw8taXTM+sVvthxoUeln/tu0acHSVfN2CHEnydTZpwNFV6t+23aaRIRsQ6HhcqJy2535RsfS8ULtVKMBxapAjxd9vpi9m7ioc+j0R7CQmmeCFBoWSjE7lN66R1Ps3Fvo8v+llyeg05cc1rg46es8rZF5GAp0nn3xS5513ngKBgCZOnKg//elPMY997rnn5PP5Ij4CAffPLtilr80xY3HzXWbxHL9WVc91dIATEtpvRoqWjtw3K3YVXrHjZq2qnhtRsYXeEg1KNp/IVYmfBoX9Tu5VTmdTzH/hPkk5wUb1O7nXtJ9JDhq6szzQ+fWvf60FCxbooYce0tatWzVu3DjNmDFDhw4divmcwsJC1dXVhT/2799v9TBdKWhIW9py9VpLvra05cacgZlW0K7l5cdU5k/ujslNd5lOX6aKJdaOxrFC0kztKsxyVmyJBiVPNxbqe4cGqygn9oyqT4bK/ac93aDQF2wx9TggWZYnI//whz/UvHnzdNttt0mSVq5cqVdeeUXPPPOMFi1aFPU5Pp9PFRUVVg/N1ZItV+1eTrv5RK6ebiyM+zPccpfpxgCnu577zRQf36urPn7U1l2FQ79PKrR6i9ddubu/B3PCr2C0BoWGpC8WntAfWvM921vH8A8y9TggWZYGOidPntT777+vxYsXhx/LycnR9OnTtXHjxpjPa21t1fDhw9XZ2akJEybo3/7t3zRmzJiox3Z0dKijoyP8eXNzs3kn4FCplquGymknBE7q/7UMdH0bfKdWU6Wi534zRwZd5IhdhbtXaFGd1aWv7so9hYLVopxO5Uo61Hk2QC3M6Zph/a9jZ286vFj1eDp3pDpziuSLsXxlSDL8xV2l5oAFLA10Dh8+rGAwqPLyyHyC8vJy/fnPf476nNGjR+uZZ57RpZdeqqamJi1fvlyTJ0/Wjh079KlPfarX8UuXLtWSJUssGb8TmVGu6oU2+G6fxYnHibsKF8/xM7tzRqzuytEY8qmx06+fVh5Wjq9rSfjAKb/+61jvGYyGYI7uaxisx7zUW8eXo7bi2RpwdJUMRV61QjdrbUXX008HlnHcv6xJkybplltuUXV1taZMmaIXX3xRQ4YM0U9/+tOoxy9evFhNTU3hj7/+9a8ZHnFmmVWuGitvp8wf1PJy519kvRzkhIRmef4y9Is6eM7VtgY5kqjM6mFaQbteHd6gecWJ5ZYcDfp1Rf5Jfb6gTS82DzzzaPQ6pB/8vcjVVY89ncofqxMlc2XkFEU8bviLdaJkLn10YClLZ3RKS0vl9/vV0BBZCtvQ0JBwDk7//v01fvx47d69O+rX8/LylJeXl/ZY3cLMclWz2uBnitdncdwgtJTF/lld/D7pygEdeqoxfn5JKOctXrdynZkBevpYgb5e0mrSSO13Kn+sTgXG0BkZGWfpv7Dc3FxddtllqqmpCT/W2dmpmpoaTZo0KaHvEQwGtX37dlVWVsY/OAskmiCc6HGhvJ2Zg9p0Rb5zgxwpO2Zx3ILZnbPi9arqWVmV6M3K6saBnprVkST5cnQ673ydGjBep/POJ8hBRlj+r2zBggV66qmntGrVKu3cuVN33323jh8/Hq7CuuWWWyKSlb///e/rD3/4g/bu3autW7fq5ptv1v79+3XnnXdaPVRXSPai6hX0dnEegp0uffWqipbzluhNSLPhd2UvK8BpLC8vv+GGG/T3v/9dDz74oOrr61VdXa3XX389nKB84MAB5eScjbeOHTumefPmqb6+XoMHD9Zll12mP/7xj7r44outHqoreCGROFnFc/yeqKzyIpayusRKTi7zB7WwtDki521C4KSKcjrV1Bn/PtNNvawAp/IZhuGpydHm5mYVFRVp/4oVKszPt3s4loneR+d0r4uqm4VmC1iycgfKzxXe3ypezttPjxZElJXH8lTV4bR2WM9mzAK7T3trsxZ9boiamppUWBj/7yNR7F7uUm5LJE4Wicfus6p6btYHO6Gct3juHNyqXzQNPDOr495eVoAbkAnmYm5KJE4GQY57cRedGL9PenBIaCfv+Hk9AFJHoANHIchxP/bJSsy0gnY9Vn5M5S7tZQW4BUtXcBSCHPdjn6zEeX0JGnACZnTgGCx7eAvl54nx6hI04BQEOnAEghxvItgBYDcCHdiON0JvI9jxtqAhbWnL1Wst+drSluu9bs5wPXJ0XCTRHh2A06zYcbPmKrtLz70oej+voBaWNpFMDccg0HEJL19QSEDODvTZ8Zaa1oDubxjcazOaQ8Ec3d8wWMtF5RicgaUrFwhdUBqCkS9X6IJS0xqwaWTpIzcnu/B6e0PQkJYdLjoT5EROK4e2pVl2uJBlLDgCgY7DefmCwptediJfx/22tueemV2OvnZuyKeGYD82JYUjEOg4nFcvKLzZZS+Sk81lRzJwopuNsikpnIAcnQxJNZHYqxcU8nKy24odN9NQ0AR25e6V9kvsdUv0OMBKBDoZkM7FiAsKvIpKrPTYmQw8IXBS5f6gDgVzwkvo3bEpKZyEpSuLpZtIHLqg+Hpdzrr4ZKjcf9pVFxRycxDCv4XU2J275/dJC0ubzvx0NiWFsxHoWMiMi5HXLijkZqAngp3kOSF3b1pBu5aXH1MZm5LC4Vi6stDZi1F03S9GV+THnpGZVtCu5TrWa/mrzB/UwtJm11xQ2JkcsRTP8ZOvkwSn5O6xKSncgEDHQmZejLigwMtITk6Ok3L3QpuSAk7F0pWFzL4YuX2XY2Zz0BfKzhOXSO5eWc5pdRrKyj2o+HeE7gh0LOTFROJUkYeBRBAMJyZe7p4hqUM+fb2uVIsPDda8T0p17f5yV3dRj2B0ql/HbvU/sU39OnZLxtk8IZbI0ROBjoW8lkgMZAJBcWJiJQMX5nR93tTpvS1jJKl/23YV1j+igsMrNfDYahUcXqnC+kfUv2273UMzlc8IauiRd3XhwRc19Mi78hks66aKHB2LeSWROB3Fc/zSDrtHATdhA9DE9MzdK/EH9b1Dg898tXelp0+Glh0u1NSB7a68werftl0Djvb+d+HrbNKAo6t0omSupOqMj8tso+rWaspH39Wg9k/Cj7UEqrTh4ke0p/I6G0fmTgQ6GTB1YLsKcjq1pS1XPvl0eX6HLndhjk2qmEZGKqjESkz3ZOAtbbk6ZEKlpyMZncpvXCOpd1G9T5IhKb/pZanz0gwPzFyj6tZq1tbbpR6rAAXtdZq19Xa9MuEZgp0ksXRlsZrWgK7dX66v15Xq6cZCPdU4SA8eGqz1x62ZPrZj3xt4jxOmzUlOTp5Tys6t0O/kXuV0NsXoHNQV7OQEG/V/3xmVyWGZymcENeWj70pR+k2H0h2mfPQAy1hJYkbHQplu0W7Xvjd9YdkqNp8RVNXRTRrY3qDjgXJ9UnKVDJ/9b0BOmjan7Dw5Tio7N5sv2JLQcQPbGyweiXWqjm6K+LvrySdDg9oPquroJh085+oMjszdmNGxSKZbtKe71YQVqH6IbVTdWt325gT906bZmln7df3Tptm67c0JGlW31vZxzdp6uwp6XGxD0+Z2jI9/Q4nzcqWn4R+U0HHHA+UWj8Q6iQZpbg7m7ECgY5FMtmi3e98bJMeJwYTk7GlzKrES4+VKz9O5I9WZUxQjhDuT0TKoWJ+UXJXBUZkr0SDNzcGcHQh0LJLJtXIn7HuDxDg5mAhNm8fOgTg7bW4Hgp3EeHYPKl+O2opnS+qZpnv287UXPO6I5d9UfVJylVoCVVF3hJe6rhotgaGuDubsQKBjkUyulXs5AdFrnBxMuGHanOTkxEwraNerwxv0VNVhLS07pqeqDuvV4YfcG+SccSp/rE6UzJWRUxTxuOEv1isTnnV9NZLh82vDxY90/X+M2fkNFz/s6mDODiQjWyS0Vn4omBM1OvfJUJk/aMpauRMTEMnPic7JwYQbps1JTk6cV/egOpU/VqcCY9Tv5F75gi0y/IN0Onek64OckD2V1+mVCc/0KghoDVRpw8UPe+Y8M4lAxyKhtfL7Gwafacl+NtiJt1YeNJTU5p2ZDKqQHicHE6Fp84L2uqjJrIZ8ag1U2T5tTrAD+XJ0Ou/88Kdeq+7cU3md9lbMdGRVphuxdGWhVNbKQ3135n2S+B41Xk5A9Bonr8G7adqcHjup82KvLS/OHhs+vw6ec7X+MvSLOnjO1Y74u3MrZnQs1rNFe18zNOn03WGrCXcIBROztt4ebskf/lqGg4lofXzcNG2+YsfNmiu2iUiGE3ttAVbzGYbhgXj+rObmZhUVFWn/ihUqzM+3ezgJCxrStfvLz/TBib389OrwQ33OzCS77GWWnj/3w6tuVI6PKaRYojflG5qxYCJeU0CnNjOMhj2xEhN5I9V7Kd2tFVleyAd009+bldpbm7Xoc0PU1NSkwsJC074vMzoOcbZEPLpE96ixIwEx2l1iwWv/n6aOG60LhtLvIRo71+AT3UvHLZ1X2RMrvni9tty62acXghwndSL3KnJ0HMKtJeKxOjK3tnVo7aYP9PFBOnjGYscavJP7+KSKfJ346LXlTE5tHuo1BDoO4cQS8Xj6uksMWf+/u9TprdVRV3NyH590EOz0za03UvG4eTbHizcdTkWg4xBu3KMm3l2i1DWzc/DwscwNKguks7O4k/v4pItgJzY33kjF4/ZO2enedKRzHcg25Og4RDp9d+yS6N3f8fYOi0eSPdJdz3dyHx8zrNhxs1QtzR9Dn53uvNZrywt9c9K56SCvJznM6DiI2/aoSfTub2Agz+KRZAcz1vOd3MfHTG5e0rCC13pteeH1TfWmg7ye5BHoOIyb9qiJt9wmSQX5eRpaOjiDo/Ims9bz3dQUMF1uX9owm9tupLwulZsO8npSQ6DjQKES8ZmD2nRFfmb64KSir7vEkKnjRtNPxwRmJhGHmgK2BiojHm8NVIVLy72CYCeSm26kYvHKa5rKTYdXiwmsRo4O0hKrI3NBfh59dExkdhJxNu2lQ5+dSG7e7NMLuTndJduJ3MvFBFYi0EHaum9z8eKnpmpgoGu5ipkc81iRRBzq4+N1bALqDV5oDhhNMjcdXi8msApLVzBF6C7xomGVGjakhCDHZNmSRGwVSs/dzatBTkiizUO5DqSGQAdwgWxKIrZKKNgh4HEXrwc5yeA6kBoCHcAlsimJ2CordtzM7M4ZQUPa0par11rytaUtV0GHNjAnyIkU6zrQ3r9Ymy5YqL0VM20amXOxezlM5ZWKCCdjp2NzZPOu59E24i33B7WwtMlRFVhcT2LzGUFdvvtxjd/3M+WfOtt93s2NA63avZwZHcAEmWzHbsdmoF60qnpuVs7sxNqI91AwR/c3DFZNa8CmkUUiyOnbyPrXNOkvyxQ4FbnFDo0De6PqCkgT7djdK7RlRLbM7vS1Ea8hn3wytOxwoaYObLe1f5fXysjNFq9xoCGfpnz0gPZWzORGSMzoAGmhHbs3ZMvsQbyNeA351BDsp63tuZkdWDckH8dH48DkEOgAKaIdu7dkQ0VWohvxJnqc2QhyEkPjwOSwdJXFgkbXHd7h036V9uvaudip2004UeiuKpbud1XZ0JjP7cJvsNXeXcpKdCPeRI8zSyjAJMhJDI0Dk0Ogk6XcUnXhZNxVeZdXt40IbcR7KJgTtemcT4bK/F03PZlEgJOcUOPAgva6qPsMGvKpNVBF48AzWLrKQm6punA67qq8y6vNBfvaiDf0+cLS5ozO7GZLfpSZaByYHAKdLBOv6kKSlh0udGzzMCehHbu3dW8u6KWAZ1pBu5aXH1OZvzPi8TJ/UMvLj2VsRrd4jp8gJw00EE0cS1dZ5mzVRXTdqy7cusNxpoTuqmZtvT1cmhv+GndVnhFaVrFiY1C78uS6b8RrR47equq5lI+bIJkNQbMZgU6WcXrVhduE7qp69tFpDVRpw8UPc1flIaFd0CWZEvDYnScX2og3k6iqMl+ogShiI9DJMk6tunAzt99VsaVE4rrP7kipBzyhPLmeK8ShPLnlytwSUiaEAxxmcWADAp0s49SqC7dz610VXZ1Tk85yllu6E5uFZSrYjWTkLOPEqgvYg67O6euerJxowrIbuhObgWRjOAUzOlloWkG7lutYr/yAMn9QC0ubPTVljujYK8c8ETkn1dL8MX3P8ng9T45lKjgNgU6WsrvqAvaiq7N14m0U6uU8OZap4EQZWbp68skndd555ykQCGjixIn605/+1Ofxv/3tb3XRRRcpEAho7NixevXVVzMxzKwTqrqYOahNV+QT5GQTujpbb1X13PBHd6E8uWgdbaWuILPcf9oVeXKh5alo5wk4heWBzq9//WstWLBADz30kLZu3apx48ZpxowZOnToUNTj//jHP+qmm27SHXfcoW3btmn27NmaPXu2PvzwQ6uHCmQNujpn1qrqueE8nnNu9mvJF1skuS9Prns+EqXicAufYRiW9sCdOHGirrjiCv3nf/6nJKmzs1PDhg3TN7/5TS1atKjX8TfccIOOHz+utWvPJkJeddVVqq6u1sqVK3sd39HRoY6OjvDnzc3NGjZsmPavWKHC/HwLzgh94a7OHXxGULe9OSHuXjnPfu59cnTS0GkYOnj4mI63d2hgIE9DSwcrx9cVwYzO+a0eenFQjz46px2bJ0dgA6u1tzZr0eeGqKmpSYWFhaZ9X0tzdE6ePKn3339fixcvDj+Wk5Oj6dOna+PGjVGfs3HjRi1YsCDisRkzZmjNmjVRj1+6dKmWLFli2piBbEBXZ+t9fLBB6/93l1rbzt6IFeTnaeq40bpgaLl2dX5ZN17fOxD60iWr1bjaxoErRlBD7g1cytJA5/DhwwoGgyovj5z+Li8v15///Oeoz6mvr496fH19fdTjFy9eHBEYhWZ0APSNrs7W+fhgg9Zu+qDX461tHVq76QNdd9WlumBouXJ8Pg0bUhJxTPcOzH1JtVlhImXwzNzAS1xfdZWXl6e8vDy7hwG4ktu7OjtRp2Fo/f/u6vOY9f+7S6OqysLLWD0lEmik0qyQ5SdkI0sDndLSUvn9fjU0RFZuNDQ0qKKiIupzKioqkjoeQHrc2tXZqQ4ePhaxXBVNa1uHDh4+1ms2JxmhMvaksPyELGRp1VVubq4uu+wy1dTUhB/r7OxUTU2NJk2aFPU5kyZNijhektatWxfzeABwkuPtfQc5yR4HID2WL10tWLBAc+fO1eWXX64rr7xSTzzxhI4fP67bbrtNknTLLbdo6NChWrp0qSRp/vz5mjJlih577DHNmjVLv/rVr/Tee+/pZz/7mdVDBYC0DQwktpSe6HEwDxvYZifLA50bbrhBf//73/Xggw+qvr5e1dXVev3118MJxwcOHFBOztmJpcmTJ+sXv/iFHnjgAf3Lv/yLLrjgAq1Zs0aXXHKJ1UMFbMeF2P2Glg5WQX5en8tXBfldFVbIHDawzV6W99HJtObmZhUVFdFHxyb00UkdF2LviFV1FRKqukJmhDaw7bm3W+izVyY8w9+YA1jVR4fdywEHYCdxb7lgaLmuu+pSFeRHLk8V5OcR5GRYvA1sJWnKRw/IZ7hnbzGfEdTQI+/qwoMvauiRd101dju4vrwccDt2EvemC4aWa1RVWczOyMgMr21gy8xv8pjRAWwWuhDHevvrfiGGu4QaAl40rFLDhpQQ5NjASxvYMvObGgIdmGr+mPgdXRHJaRdipsXhJV7ZwNaLS3CZwtIVTNW4Oqj5c16g+2oSnHQhZlocXvNJyVVqCVTF3cD2k5KrbBhd4ry2BJdJzOgANgtdiHvfp3Ux5FNLYKjlF2KmxeFFoQ1spd5zIW7awNZpM79uQqAD2MwJF2KmxeFloQ1sWwOVEY+3BqpcU1rupJlft2HpCnAAu3cSZ1ocXuf2DWy9sgRnBwIdwCHsvBAzLY5s4OYNbEMzv7O23i5Dvohgx01LcHYg0AEcxK4LMdPigPPZPfPrVgQ6AJgWByxm1j52bl+CswOBDuBRyVxYmRYHrGN22wY3L8HZgUAH8KBULqxMiwPm676haHehtg1uqfpyMwIdwGPSubAyLQ6Yh33snIFAB/AQMy6sTIvbz6x8DtiLtg3OQKAD0zWuDkrVdo8iO3FhdT+24XCvngHqwLa6hJ5H2wZrEejAEvPHsN+VHeiH427kc7hXtAD1RO45CT2Xtg3WYgsIwEPoh+NebMPhXrH2ics/eVSGeoatZ2VqH7tsR6ADeIhTNghF8kLLjtFfuchlRzhHIgGq1DvYoW1D5hDoAB5i1QahPiOooUfe1YUHX9TQI++6albBLWNPdDnx/Lr/5+jzyDbxA9Suj7b+kctYbtpQ1O3I0QE8xux+OG5OjnXT2BNdTqze/9+q3v/fjj2PbJNogPr2mIfVGqikks4GBDqAB5nVD8fNybFmjj0T5d7xt+FQxKyBna+B28rfrRxvogFqa6CSSkebEOgAHpVuPxw3Nzszc+yZmhXqexsOOeY1cNMsmWT9eNknzvnI0QEQlZuTY80ae6xqmtBsyqi6tSaNuEto2bE1UNljvNFl+jXI9O+ju1RyrTIxXqvy4mAeAh1YonF1UPPHvGD3MJAGN/fkMWPsdpV776m8Ts9+bqv+71VrVDv8joSek4nXILHfx3c19PDbpid+j6pbq9venKB/2jRbM2u/rn/aNFu3vTmhz0Alk69frACVhGNnYOkKQFRu7sljxtjt7DLdfdmxev9/xz0+E69BYr+PT/RPm78UfsyMJaJUc60y/fqxT5xzMaMDICo39+T5pOQqtfUfnFajNifMaDnpNUjlPNNdIkpnVsaO1y8UoP5l6Bd18JyrCXIcgkAHQFRuzj0YWf+aAqeORf2acea/8cbuhBktJ70GqZxnuktE6eRamfn6uaUXE6Ij0AEQkxtzD87OAsRO4m3vX6K9FTP7/D5OmU1xymsQ7/cRSzoJ0+nMypj1+qWSHwRnIUcHQJ/clnsQPzdDyj91NG5uRt/l3pmdTXHCa9DX7yMRqSwRpTMrY8br5+Y+UjiLGR0Acbkp98DM3AynzKZIzngNYv0+EpHK0le6szLpvH5ssuodzOgA8BSzc2ucMJviJD1/HyfySvX52ntU0FFvesM8M2ZlUn397Ky6g7kIdAB4ihWdatPtMu01PX8fG8b8m2VLfGbs3ZbK6+eEqjuYg0AHgKc4KbcmW5i9kWy075/pWTUnVN3BHAQ6sEzj6qDmz3lBK3bcbPdQkGWsfuNFb1YHI5meVWMPK+8g0IGlGlcHpWq7R4FsRG5N5nlpiY+ZQe8g0AHgWV5640XmMTPoDQQ6ABzNZwSZlYFtmBl0PwIdAI41qm5tr7tpMzaKBJLBzKC70TAQgCOFutIW9Ohlku5GkQCyC4EOAMehKy0AsxDoAHCcdHatBoDuCHQAOA5daQGYhWRkALaKVlVFV1rrUc2GbEGgA8A2MauqPv0DutJaiGo2ZBOWrgDYos+qqm13alfl/5HUOx2ZrrTpoZoN2YZAB5abP+YFu4cAh0mkqmp03Rq9OuFptQYqI77eGqjSKxOe8fzMg88IauiRd3XhwRc19Mi7plSYUc2GbMTSFSzHflfoKVRVFUuoqqot9xw9+7mtWZdLYtXSUqK/96qjm2iQB88g0AGQcclUVWVbV9rQ0pJ65CaFlpbSmc2img3ZiKUrABlHVVV0Vi8t8XtHNiLQAZBxn5RcpZZAVZS38y6GfGoJDM26qiqrGyXye0c2ItABkHGGz68NFz/S9f9UVYVZvbTE7x3ZiEAHQNpSqRDaU3mdXpnwTNZWVUWTiaUlfu/INiQjA0hLOhVCeyqv096KmVlXVRVLaGnJ6kaJ/N6RTQh0AKTMjAqhbKuq6ktoaWnW1ttlyBcR7Ji9tMTvHdmCpSsAKaH5nDVYWgLMxYwOgJTQfM46LC0B5iHQAZASms9ZK9GlJXYhB/pGoAMgJTSfsx+7kAPxkaMDICU0n7MXu5ADiSHQAZASms/Zh0RwIHEEOgBSRoWQPazeKsINUmlSiexEjg6AtFAhlHnZnghObhKSYemMztGjRzVnzhwVFhaquLhYd9xxh1pbW/t8ztSpU+Xz+SI+7rrrLiuHCSBNoQqhvwz9og6eczVBjsWyORGc3CQky9JAZ86cOdqxY4fWrVuntWvX6u2339bXvva1uM+bN2+e6urqwh/Lli2zcpgAbMQSRPKyNRGc3CSkwrKlq507d+r111/Xli1bdPnll0uSfvzjH+vaa6/V8uXLVVVVFfO5AwYMUEVFRUI/p6OjQx0dHeHPm5ub0xs4gIxhCSI1mdwqwkloUolUWDajs3HjRhUXF4eDHEmaPn26cnJytHnz5j6fu3r1apWWluqSSy7R4sWLdeLEiZjHLl26VEVFReGPYcOGmXYOMM/8MS/YPQQ4DEsQ6cnGRPBsz01Caiyb0amvr1dZWVnkD+vXTyUlJaqvr4/5vK985SsaPny4qqqq9MEHH+g73/mOdu3apRdffDHq8YsXL9aCBQvCnzc3NxPsOFDj6qBUbfco4BTxliAM+TTlowe0t2Km52YlzJRtieDZnJuE1CUd6CxatEiPPvpon8fs3Lkz5QF1z+EZO3asKisrNW3aNO3Zs0ejRo3qdXxeXp7y8vJS/nnInPljXtCKHTfbPQw4AEsQ5smmXchDuUkF7XURy3UhhnxqDVR5LjcJ6Uk60Lnvvvt066239nnMyJEjVVFRoUOHDkU8fvr0aR09ejTh/BtJmjhxoiRp9+7dUQMdAO7DEgRSka25SUhP0oHOkCFDNGTIkLjHTZo0SY2NjXr//fd12WWXSZLefPNNdXZ2hoOXRNTW1kqSKisr+z4QgGuwBIFUhXKTeiaxtwaqtOHihz2Zm4T0WJaj8+lPf1rXXHON5s2bp5UrV+rUqVO65557dOONN4Yrrg4ePKhp06bp+eef15VXXqk9e/boF7/4ha699lqdc845+uCDD/Stb31Ln/nMZ3TppZdaNVQAGcYSBNKRbblJSI+lnZFXr16te+65R9OmTVNOTo6+9KUv6Uc/+lH466dOndKuXbvCVVW5ubl644039MQTT+j48eMaNmyYvvSlL+mBBx6wcpgAMowlCKQrm3KTkB5LA52SkhL94he/iPn18847T4Zx9gI3bNgwbdiwwcohAXAIliDcz2cEmVWB47HXFQDbsAThXjR7hFsQ6ACwFUsQ7hNq9qge+VWhZo9ebVgId7J0rysAgLew3xTchkAHAJCwULPH6NuJRjZ7BJyAQAcAkDCaPcJtyNEBAPQSq6KKZo9wGwIdAECEviqq9lbMpNkjXIWlK2RE8Rw/G3oCLhCqqCroselqqKJqZP1r2nDxI5J6pyPT7BFORKCDjCDIAZwv0YqqvRUz9cqEZ9QaiNyDsDVQRWk5HIelKwCApLMVVbF0r6gyq9kj3ZVhNQIdAICk5Cuq0m32SHdlZAJLVwAASYlXSplRURUvF2hU3dq0fwYgEegAAM74pOQqtQSqomTodDHkU0tgaNoVVXRXRiYR6ABACnxGUEOPvKsLD76ooUfe9cSbsuHzZ6Siiu7KyCRydAAgSV7OLdlTeZ1emfBMr/NrDVRpw8UPm3J+dFdGJhHoAEASsmHnbrMqqmKhuzIyiUAHABIUL7fEkC/cZ8btJdLpVlT1JZQLRHdlZAI5OgCQoERzS8bte8pTuTtmy1QuECAxowMACUs0Z2TKzu+F/98ruTtmy0QuECAR6ABAwlLJGfFS7o7ZrM4FAiQCHQBIWPzcEnk+d8dsVuYCARI5OgAcwg19afrKLZF6BzlnH6cvDGAXZnQA2M5NfWli5ZYkgr4wQOYR6ACwlRv70vTMLRnQcSgiATkW+sIAmUegA8A2bu5L0z23xGcENWHff9EXBnAgcnQA2MYrex7RFwZwLgIdALbx0p5Hodyd1kBlxOOtgSpHLr8B2YKlKwC2cfKeRz4jmHR/F/rCAM5DoAPLraqea/cQ4FBO3fMonSow+sIAzsLSFQDbODG3JVQFVtCjdDxUBTaqbm3GxgIgfQQ6AGzlpNyWeFVgkjTlowcc2cwQQHQsXQGwnVNyW0JVYLF0rwJjeQpwBwIdAI7ghNwWL1WBAejC0hUAnOHkKjAAqSHQAYAzQlVg0TbslLoyd1oCQ+lwDLgIgQ4AnOHEKjAA6SHQAYBunFQFBiB9JCMDQA9OqQIDkD4CHViqeI5f2mH3KIDkOaEKDED6WLqCZYrn+LVix812DwMAkMUIdAAAgGcR6AAAAM8i0AEAAJ5FoAMAADyLQAcAAHgWgQ4AAPAsAh0AAOBZBDqwDD10AAB2I9CBJYrn0CofAGA/Ah0AAOBZBDoAAMCzCHQAAIBnEegAAADPItABAACeRaADS1BaDgBwAgIdmI7ScgCAUxDoAAAAzyLQAQAAnkWgAwAAPItABwAAeBaBDkxVPMdPxRUAwDEIdGAqghwAgJMQ6AAAAM+yLNB55JFHNHnyZA0YMEDFxcUJPccwDD344IOqrKxUfn6+pk+fro8//tiqIQIAAI+zLNA5efKkvvzlL+vuu+9O+DnLli3Tj370I61cuVKbN2/WwIEDNWPGDLW3t1s1TAAA4GH9rPrGS5YskSQ999xzCR1vGIaeeOIJPfDAA7r++uslSc8//7zKy8u1Zs0a3XjjjVGf19HRoY6OjvDnTU1NkqQWgiNbtLc22z0EAIALtR9vkdQVD5jJskAnWfv27VN9fb2mT58efqyoqEgTJ07Uxo0bYwY6S5cuDQdV3V3yne9YNlb0Zb7dAwAAuNiRI0dUVFRk2vdzTKBTX18vSSovL494vLy8PPy1aBYvXqwFCxaEP29sbNTw4cN14MABU39RTtfc3Kxhw4bpr3/9qwoLC+0eTsZw3px3NuC8Oe9s0NTUpHPPPVclJSWmft+kAp1Fixbp0Ucf7fOYnTt36qKLLkprUMnIy8tTXl5er8eLioqy6h9ISGFhIeedRTjv7MJ5Z5dsPe+cHHPTh5MKdO677z7deuutfR4zcuTIlAZSUVEhSWpoaFBlZWX48YaGBlVXV6f0PQEAQHZLKtAZMmSIhgwZYslARowYoYqKCtXU1IQDm+bmZm3evDmpyi0AAIAQy8rLDxw4oNraWh04cEDBYFC1tbWqra1Va2tr+JiLLrpIL730kiTJ5/Pp3nvv1cMPP6z/+Z//0fbt23XLLbeoqqpKs2fPTvjn5uXl6aGHHoq6nOVlnDfnnQ04b847G3De5p63zzC7juuMW2+9VatWrer1+FtvvaWpU6d2/XCfT88++2x4OcwwDD300EP62c9+psbGRv3DP/yDfvKTn+jCCy+0YogAAMDjLAt0AAAA7MZeVwAAwLMIdAAAgGcR6AAAAM8i0AEAAJ7liUDnkUce0eTJkzVgwAAVFxcn9Jxbb71VPp8v4uOaa66xdqAmS+W8DcPQgw8+qMrKSuXn52v69On6+OOPrR2oyY4ePao5c+aosLBQxcXFuuOOOyLaFkQzderUXq/3XXfdlaERp+bJJ5/Ueeedp0AgoIkTJ+pPf/pTn8f/9re/1UUXXaRAIKCxY8fq1VdfzdBIzZXMeT/33HO9XtdAIJDB0Zrj7bff1he+8AVVVVXJ5/NpzZo1cZ+zfv16TZgwQXl5eTr//PMT3kDZSZI97/Xr1/d6vX0+X5/bBDnN0qVLdcUVV2jQoEEqKyvT7NmztWvXrrjPc/vfdyrnbdbftycCnZMnT+rLX/5y0o0Fr7nmGtXV1YU/fvnLX1o0Qmukct7Lli3Tj370I61cuVKbN2/WwIEDNWPGDLW7aLf3OXPmaMeOHVq3bp3Wrl2rt99+W1/72tfiPm/evHkRr/eyZcsyMNrU/PrXv9aCBQv00EMPaevWrRo3bpxmzJihQ4cORT3+j3/8o2666Sbdcccd2rZtm2bPnq3Zs2frww8/zPDI05PseUtdbfK7v6779+/P4IjNcfz4cY0bN05PPvlkQsfv27dPs2bN0mc/+1nV1tbq3nvv1Z133qnf//73Fo/UXMmed8iuXbsiXvOysjKLRmi+DRs26Bvf+IY2bdqkdevW6dSpU/r85z+v48ePx3yOF/6+UzlvyaS/b8NDnn32WaOoqCihY+fOnWtcf/31lo4nUxI9787OTqOiosL4j//4j/BjjY2NRl5envHLX/7SwhGa56OPPjIkGVu2bAk/9tprrxk+n884ePBgzOdNmTLFmD9/fgZGaI4rr7zS+MY3vhH+PBgMGlVVVcbSpUujHv/P//zPxqxZsyIemzhxovH1r3/d0nGaLdnzTuZv3i0kGS+99FKfxyxcuNAYM2ZMxGM33HCDMWPGDAtHZq1Ezvutt94yJBnHjh3LyJgy4dChQ4YkY8OGDTGP8crfd3eJnLdZf9+emNFJ1fr161VWVqbRo0fr7rvv1pEjR+wekqX27dun+vp6TZ8+PfxYUVGRJk6cqI0bN9o4ssRt3LhRxcXFuvzyy8OPTZ8+XTk5Odq8eXOfz129erVKS0t1ySWXaPHixTpx4oTVw03JyZMn9f7770e8Tjk5OZo+fXrM12njxo0Rx0vSjBkzXPO6SqmdtyS1trZq+PDhGjZsmK6//nrt2LEjE8O1lRde73RUV1ersrJS//iP/6h3333X7uGkpampSZL63LHbi693IuctmfP3nbWBzjXXXKPnn39eNTU1evTRR7VhwwbNnDlTwWDQ7qFZJrSOXV5eHvF4eXm5a9a46+vre01T9+vXTyUlJX2ew1e+8hW98MILeuutt7R48WL9/Oc/180332z1cFNy+PBhBYPBpF6n+vp6V7+uUmrnPXr0aD3zzDN6+eWX9cILL6izs1OTJ0/W3/72t0wM2TaxXu/m5ma1tbXZNCrrVVZWauXKlfrd736n3/3udxo2bJimTp2qrVu32j20lHR2duree+/V1VdfrUsuuSTmcV74++4u0fM26+87qU09M2nRokV69NFH+zxm586duuiii1L6/jfeeGP4/8eOHatLL71Uo0aN0vr16zVt2rSUvqcZrD5vp0r0vFPVPYdn7Nixqqys1LRp07Rnzx6NGjUq5e8Le02aNEmTJk0Kfz558mR9+tOf1k9/+lP94Ac/sHFksMLo0aM1evTo8OeTJ0/Wnj179Pjjj+vnP/+5jSNLzTe+8Q19+OGHeuedd+weSkYlet5m/X07NtC57777wntgxTJy5EjTft7IkSNVWlqq3bt32xroWHneFRUVkqSGhgZVVlaGH29oaAjvGG+XRM+7oqKiV2Lq6dOndfTo0fD5JWLixImSpN27dzsu0CktLZXf71dDQ0PE4w0NDTHPsaKiIqnjnSiV8+6pf//+Gj9+vHbv3m3FEB0j1utdWFio/Px8m0ZljyuvvNKVgcI999wTLqb41Kc+1eexXvj7DknmvHtK9e/bsYHOkCFDNGTIkIz9vL/97W86cuRIRABgByvPe8SIEaqoqFBNTU04sGlubtbmzZuTrlgzW6LnPWnSJDU2Nur999/XZZddJkl688031dnZGQ5eElFbWytJtr/e0eTm5uqyyy5TTU2NZs+eLalrqrempkb33HNP1OdMmjRJNTU1uvfee8OPrVu3LuJuyOlSOe+egsGgtm/frmuvvdbCkdpv0qRJvcqL3fZ6m6W2ttaRf8exGIahb37zm3rppZe0fv16jRgxIu5zvPD3ncp595Ty33fa6cwOsH//fmPbtm3GkiVLjIKCAmPbtm3Gtm3bjJaWlvAxo0ePNl588UXDMAyjpaXFuP/++42NGzca+/btM9544w1jwoQJxgUXXGC0t7fbdRpJS/a8DcMw/v3f/90oLi42Xn75ZeODDz4wrr/+emPEiBFGW1ubHaeQkmuuucYYP368sXnzZuOdd94xLrjgAuOmm24Kf/1vf/ubMXr0aGPz5s2GYRjG7t27je9///vGe++9Z+zbt894+eWXjZEjRxqf+cxn7DqFuH71q18ZeXl5xnPPPWd89NFHxte+9jWjuLjYqK+vNwzDML761a8aixYtCh//7rvvGv369TOWL19u7Ny503jooYeM/v37G9u3b7frFFKS7HkvWbLE+P3vf2/s2bPHeP/9940bb7zRCAQCxo4dO+w6hZS0tLSE/34lGT/84Q+Nbdu2Gfv37zcMwzAWLVpkfPWrXw0fv3fvXmPAgAHGt7/9bWPnzp3Gk08+afj9fuP111+36xRSkux5P/7448aaNWuMjz/+2Ni+fbsxf/58Iycnx3jjjTfsOoWk3X333UZRUZGxfv16o66uLvxx4sSJ8DFe/PtO5bzN+vv2RKAzd+5cQ1Kvj7feeit8jCTj2WefNQzDME6cOGF8/vOfN4YMGWL079/fGD58uDFv3rzwxdQtkj1vw+gqMf/e975nlJeXG3l5eca0adOMXbt2ZX7waThy5Ihx0003GQUFBUZhYaFx2223RQR3+/bti/g9HDhwwPjMZz5jlJSUGHl5ecb5559vfPvb3zaamppsOoPE/PjHPzbOPfdcIzc317jyyiuNTZs2hb82ZcoUY+7cuRHH/+Y3vzEuvPBCIzc31xgzZozxyiuvZHjE5kjmvO+9997wseXl5ca1115rbN261YZRpydUNt3zI3Suc+fONaZMmdLrOdXV1UZubq4xcuTIiL9zt0j2vB999FFj1KhRRiAQMEpKSoypU6cab775pj2DT1G08+15nfbi33cq523W37fvzAAAAAA8J2vLywEAgPcR6AAAAM8i0AEAAJ5FoAMAADyLQAcAAHgWgQ4AAPAsAh0AAOBZBDoAAMCzCHQAAIBnEegAAADPItABAACe9f8Dldj+me32SmQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(poly_svc,axis=[-1.5,2.5,-1.0,1.5])\n",
    "plt.scatter(X[y==0,0],X[y==0,1])\n",
    "plt.scatter(X[y==1,0],X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用多项式核函数的SVM（体验）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm  import SVC\n",
    "def polynomial_kernel_SVC(degree,C=1.0):\n",
    "    return Pipeline([\n",
    "        (\"std\",StandardScaler()),\n",
    "        (\"kernelSVC\",SVC(kernel=\"poly\",degree=degree,C=C))#自动进行多项式化处理  \n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-5 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-5 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-5 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-5 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-5 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-5 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;std&#x27;, StandardScaler()), (&#x27;kernelSVC&#x27;, SVC(kernel=&#x27;poly&#x27;))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;std&#x27;, StandardScaler()), (&#x27;kernelSVC&#x27;, SVC(kernel=&#x27;poly&#x27;))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-19\" type=\"checkbox\" ><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(kernel=&#x27;poly&#x27;)</pre></div> </div></div></div></div></div></div>"
      ],
      "text/plain": [
       "Pipeline(steps=[('std', StandardScaler()), ('kernelSVC', SVC(kernel='poly'))])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_kernel_svc=polynomial_kernel_SVC(degree=3)\n",
    "poly_kernel_svc.fit(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAGiCAYAAADulWxzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABCw0lEQVR4nO3de3jU9Z33/9dkIJlATEIMOSEqoGJVhKJycm+hhS0i9pK7vbtqacV66OpVe2nRUti6unb1ZmVpq23dm7auiq093lW6N1RbjYKrBTwEPAClnH5gYxLklBAgASaf3x9xhkwySebwPc/zcV3xMpPvTD7ffJmZ93ze78/7EzLGGAEAAARQntsDAAAAsAuBDgAACCwCHQAAEFgEOgAAILAIdAAAQGAR6AAAgMAi0AEAAIFFoAMAAAKLQAcAAAQWgQ4AAAgsWwOdV199VZ/97GdVU1OjUCikFStW9Hn86tWrFQqFenw1NjbaOUwAABBQtgY6R44c0dixY/XYY4+ldb+tW7eqoaEh/lVRUWHTCAEAQJANsPPBZ82apVmzZqV9v4qKCpWWllo/IAAAkFNsDXQyNW7cOLW3t+uiiy7Sv/zLv+jyyy/v9dj29na1t7fHv+/o6NCBAwd0+umnKxQKOTFcAACQJWOMDh8+rJqaGuXlWZdw8lSgU11drWXLlunSSy9Ve3u7Hn/8cU2bNk3r16/X+PHjk95n8eLFeuCBBxweKQAAsMMHH3ygM844w7LHCxljjGWP1tcvCoX03HPPac6cOWndb+rUqTrzzDP1s5/9LOnPu8/oNDc368wzz9T7Dz+s0yKRbIYMAAAccritTRd961s6dOiQSkpKLHtcT83oJDNhwgS99tprvf68oKBABQUFPW4/LRJRcWGhnUMDAAAWs7rsxPN9dDZu3Kjq6mq3hwEAAHzI1hmd1tZWbd++Pf79rl27tHHjRpWVlenMM8/UokWLVF9fr6efflqS9Mgjj2jEiBG68MIL1dbWpscff1wvv/yy/vSnP9k5TAAAEFC2BjpvvfWWPvWpT8W/nz9/viRp3rx5euqpp9TQ0KA9e/bEf378+HHdfffdqq+v16BBg3TxxRfrpZdeSngMAACAVDlWjOyUlpYWlZSUaPejj1KjAwCAT7QcO6az7rxTzc3NKi4utuxxPV+jAwAAkCkCHQAAEFgEOgAAILAIdAAAQGAR6AAAgMAi0AEAAIFFoAMAAAKLQAcAAAQWgQ4AAAgsAh0AABBYBDoAACCwCHQAAEBgEegAAIDAItABAACBRaADAAACi0AHAAAEFoEOAAAILAIdAAAQWAQ6AAAgsAh0AABAYBHoAACAwCLQAQAAgUWgAwAAAotABwAABBaBDgAACCwCHQAAEFgEOgAAILAGuD0AIGiiRqpry9e+k2GVD4hqfOS4wiG3RwUAuYlAB7BQbWtES/aVqCkajt9WGY5qQXmzphe1uTgyAMhNpK4Ai9S2RnRP0xA1RROfVnujebqnaYhqWyMujQwAcheBDmCBqJGW7CuRkSQl5qnMx98v2VesqHF8aACQ0wh0AAvUteV/nK5KXoxjFFJTdIDq2vKdHRgA5DgCHcAC+06G+z8ojeMAANagGBm+5aXVTeUDopYeBwCwBoEOfMlrq5vGR46rMhzV3mhevCanq5CMKsKdwRgAwDmkruA7XlzdFA5JC8qbJXUGNV3Fvl9Q3kI/HQBwGIEOfMXLq5umF7VpaeVBVYQ7Em6vCEe1tPIgfXQAwAWkruArp1Y3Jdd1ddNlhc6niaYXtWna4DbP1A4BQK4j0IGv+GF1UzgkV4IsAEBPpK7gK6xuAgCkg0AHvhJb3dS94DcmJKPK8ElWNwEAJBHowGdY3QQASAeBDnyH1U0AgFRRjAxfYnUTACAVBDrwLVY3AQD6Q+oKAAAEFoEOAAAILAIdAAAQWAQ6AAAgsAh0AABAYBHoAACAwCLQAQAAgUWgAwAAAotABwAABBadkeFbUSO2gAAA9IlAB75U2xrRkn0laoqG47dVhqNaUN7Mpp4AgDhSV/Cd2taI7mkaoqZo4j/fvdE83dM0RLWtEZdGBgDwGmZ04CtRIy3ZVyIjSUrMUxmFFJLRkn3Fmja4jTRWlrqnBscWHNc77aQKAfgLgQ58pa4tPyFd1Z1RSE3RAapry2dn8ywkSw3myaijS3BJqhCAH5C6gq/sO9l7kJPJceipt9RgR7fjSBUC8AMCHfhK+YCopcchUV+pwWSpQklasq9YUePE6AAgfaSu4CvjI8dVGY5qbzQv/kbbVUhGFeHO+hGr5NIy9v5Sg905mSrMpesAwDoEOvCVcEhaUN6se5qGKCSTEOyEPp6HWFDeYtkbYK4tY8805Wd3qjDXrgMA69iaunr11Vf12c9+VjU1NQqFQlqxYkW/91m9erXGjx+vgoICnXPOOXrqqafsHCJ8aHpRm5ZWHlRFOLFqpCIc1dLKg5a98eXiMvZMU352pgpz8ToAsI6tMzpHjhzR2LFjddNNN+lzn/tcv8fv2rVLs2fP1m233aZnnnlGtbW1uuWWW1RdXa2ZM2faOVT4zPSiNk0b3GZbKiNXl7H3lxrszu5UYVk4qodz8DoAsI6tgc6sWbM0a9aslI9ftmyZRowYoe9+97uSpE984hN67bXX9P3vf59ABz2EQ7KtLiRXl7H3lRqUjORCqrAvQb0OAKzjqVVXa9eu1YwZMxJumzlzptauXdvrfdrb29XS0pLwBWQr1ZqT9Ufz9fzhQr15LD8wK496Sw12f7FwKlWYCtoJAOiNp4qRGxsbVVlZmXBbZWWlWlpadOzYMRUWFva4z+LFi/XAAw84NUT4WDqrdlKtOXn8UHH8/4NUHJssNWhnZ+S+l7X3j3YCAHrjqUAnE4sWLdL8+fPj37e0tGj48OEujghelO6qnf5rVWLTN6d+FiuOXSrrZjnclCw16FaqsHdGlRbXCNmJJfKA8zwV6FRVVampqSnhtqamJhUXFyedzZGkgoICFRQUODE8+FQsJdI9s9RXYNJ/rYpEcax1Mks9dV6HK4uO+eJvzRJ5wB2eqtGZPHmyamtrE2578cUXNXnyZJdGBL/rb/WU1Htn395qVTofJ/k7a9fiWKQus9RT5zV4obXQ8/VRLJEHelc6N6zl4+bpl2O+aMvj2zqj09raqu3bt8e/37VrlzZu3KiysjKdeeaZWrRokerr6/X0009Lkm677Tb96Ec/0oIFC3TTTTfp5Zdf1m9+8xutWrXKzmEiwLJdPdW9VmXn8QH66aHT+v29FMemJ91l7ad4f9VVrrYqAPpSOvfUa+Sjm75k6++yNdB566239KlPfSr+fayWZt68eXrqqafU0NCgPXv2xH8+YsQIrVq1St/4xjf06KOP6owzztDjjz/O0nJkzIpNQLvWqrx5LD+lQGd/NE9RI964UtR3qrB/Xg4sc7VVAdCb5ePmSZuc+322BjrTpk2TMb3PKSfrejxt2jRt2LDBxlEhl1i9CWiqMw9L95foZ4eKqL9Iw/SiNi3VwbT66MR4edWVFcE24Gelc8O2z9r0xVPFyIDVrN4ENJ2GekFbheWE7qnCsnBU/7x3iD5ycBNXq1kdbAN+4GRqqj8EOgg0OzYB7X3mgfoLK3Rf1v4tBzdxtYPVwTbgdW7P4HRHoIPA6y0wqQhHtaC8JaPZltjMwy+bB2vp/pJej6P+Int2XD8n2RFsA16zfNy8U984WH+TCgId5AQ7NgENh6TTeyw9T476i+zYvYmr3fwerAHJdE1PeS246YpABznDjk1Aqb9wjp2buDrB78Ea0JXTK6eyQaADZIH6C6TD78EacpfX6m7SQaADZIH6C7B/FYLKSyunskGgA2TJD/UXvBnbg/2rEFR+nsHpjkAHsICX6y/sejPO9eApk81iAS/z8sqpbBDoABbxYv2FXW/GuT6Twf5VCAq/rJzKBoEOEFB2vRkHeSYj1Vkq9q9CEPhp5VQ2CHSAgLLjzTjIMxnpzFKxfxX8KEh1N+kg0AEy5PUaFTvejIM6k5HuLBX9k+AHCWkp+XvlVDYIdOAbXgos/FCjYsebcRBnMjKZpaJ/ErwuV2dvkiHQgSXsDkK8FFj4pUYl9mbcFM1T9zfwTp1ncOhkXsqPGcSZjExmqeifBC8K6qqpbKX+Cgf0orY1oqt2V+rWD8u1aO8Q3fphua7aXana1ohlj39P05CP37BPiQUWVv2eVPT36V+SluwrVrR7FOSCcEi6p7z54++SDahzvEv3pz7eWPAUSvp4nW/yleGTvprJyHSWanpRm5ZWHlRFt/3OKsJRLa30RrCLYCudG45/JQQ5SMCMDrJi9+yG14pf/VajUhruUPLZnJj0xhvEmYxsZqm83D8JwUdqKjUEOsiYE0GI1wILv9Wo2DFeP3SCTke29TZe7J+EYKLuJjMEOsiYE0FIqm/Ae0+E9abs/1TttxoVu8YbpJmMIM5SITiCst+Umwh0kDEnZjdSfQNeur9YBzvsL1T222obO8cbpJmMoM1SIRiYwbEGgQ4y5sTsRn9v1LEi24MdyQuVrV4B5bdP/14dr5daBcQEaZYK/pM0qGHllCUIdNBDqm9CTsxu9PVGnbiSyLlCZb99+vfaeL3UKqC7IM1SwftISzmDQAcJ0nkTcmq2oLc36iF5HQnpqu7sLFT226d/r4zXLz2IALuRlnIOgQ7iMnkTcmq2INkb9d6TYX1775B+72vXCii/ffp3e7xeaxUAOC0huCEt5RgCHUjK7k3IqdmC7m/Ubx7LT+l+XlkBleu81ioAcALpKfcR6EBS9m9CbswW+G0FVK7zWw8iIBM9AhtmblxHoANJ/nwT8uqKIiTntx5EQDriaSkCG88h0IEk/74JeW1FEXrHDByChrSUPxDoQJK/34S8sqIIfWMGDn7WNaiJIbjxBwIdSPL/m5DbK4qQGqtn4LzYeBDBRFDjXwQ6iCMNBCdYNQPn5caD8D/SUsFBoIMEpIHghGxn4Gg8CKt1T00R3AQHgU4O6m+6nzQQvIzGg7Da8nHzWC0VYAQ6OYbpfvgdjQdhhYQZHIKcQCPQySFM96NPpkMDju9UKHpYJnyaTuaPlEJ5/d/PYX7s+QR3JU1LEdzkDAKdHMF0P/oy8Nh7Kjy0QnkdzfHbOvJKdKx0jk4UjnFxZD35tecT3MHmmSDQyRFM96M3A4+9p0EHlve4PdTRrEEHluto2TxPBTt+7vkE+1FUjO4IdHIE0/1IynSo8NAKSd3n+Tq/N5IKm3+vE5ELPZPG8nvPJ1iHlBRSQaCTI5juRzIDju9MSFd1F5IUih7SgOM7dbLgHOcG1g96PoGUFFJFoJMjmO5HMqHoYUuPcxI9n3ILKSlkikAnRzDdj2RM+DRLj3MaPZ+CiZQUrESgk0OY7kd3J/NHqiOvRKGO5iTzfJ01OiZc2rnUHHBA0FNSIRNVzYF1GtzWpCORSn1YNkkmRG2knQh0cowfp/vZuNFGoTwdK52jQQeWyyixIDnWb+lYyTWeKURG8PQIbAI8czOqYaWmbv62Tmv7MH7b4UiN1lzwkHZUX+3iyIKNQCcH+Wm6n07O9jtROEZHy+ap8NAKhboUJptwqY6VXOOppeXwr+7pKCm3UlKjGlZqdt1NUreWrUVtDZpdd5NWjX/ClWAnF2aYCHTgWXRyds6JwjE6EbnQF52R4T9BT0f1J2Simrr521KSpSCxmsmpm+/VzqpZjgYZuTLDRKADT6KTswtCeZ5aQg7/6TWgyZFZm97UHFiXEEx0F5LRaW31qjmwTvWnX+7ImLw6w2QHAh14Ep2cAe9KloaSWPLdm8FtTZYely2vzjDZhUAHnkQnZ8Cbcj0NlYkjkUpLj8uWF2eY7ESgA0+ikzPsxmq+3vUZzOR4GioTH5ZN0uFIjYraGuJ9y7oyCqk1UqMPyyY5Mh6vzTDZjUAHnkQnZ9gp11fz9ZZ6imHGxlomFNaaCx7S7Lqb4jWG8Z99/Pq25oIHHUsTeW2GyW4EOvAkOjnDLrm+mo/Ukzt2VF+tVeOf6LHKqTVSozUXPOho4a/XZpjsRqADz6KTs/uWj5vn9hAs1WGM/vP5/5ZRe4+f+XU1X9qBC6kn1+yovlo7q2a53rfGazNMdiPQgaf5sZOz3+TSCpr6fQfVeqxnkBMTW83317+LaPLZJxwcWeaCeJ2CzITCnijw9dIMk90IdOB5furk7DfLx83LqU/4R9p6D3K6evovV+iNI9U2jwZwl1dmmOxGoAPkgKCloDI1OFJg6XGA33llhslOBDo5hOW0HmY6LNt+IWkqKodmbfoyrHyIigoL+kxfFRUWaFj5EAdHBcBOBDo5IteX03rZwGPvqfDQCuV12VCzI69Ex0rnZLShJjUbvcsLhTRt7GitXPdur8dMGztaeSE+AQBBQaCTA3J9Oa2XDTz2ngYdWN7j9lBHswYdWK620z6jjgFD+5zlYblwes4dVqmrJ12s1e9sTZjZKSos0LSxo3XuMHt6h3QYo/p9B3WkrV2DI52zRgRUgP0IdAKOzTE9zHSo8NAKSd2vTOf3RlLh4T/Fb+s+yxNLURHkpO/cYZUaVVORdeCRavCyrb7J8cAKQCcCnYBLdXPMZQdO04RB7dTtOGjA8Z0J6aruegQ/H8/yHC2bp8G3jCPAyVJeKKThQ8syvn+qwcu2+qakqbLWY+1aue5dXT3p4pwJdkImGvgVPvAeAp2AS3XTy58eOk0/PXQadTsOCkUPp3e8OgPTjqMv6QfvP9wzEoJjUg1eOozR6ne29vlYq9/ZqlE1FYFPY41qWNmjZ8vhSI3WXPBQoHq2wHsyW9YB30h308tY3U5ta8SmESHGhE9L+z5ddxWGO1INXmJprb5WeEmdwVH9voNWDtFzRjWs1Oy6m1TUbcfsorYGza67SaMaVro0MuQCAp2Ai22OmWw/k2Ri7b+X7CtWNLW7IEMn80eqI68kxSuTKCi7CvtROsFLqg0KUz3Oj0Imqqmbvy0l2Z439ro0dfO9Cpn0PpQBqXIk0Hnsscd09tlnKxKJaOLEiXrjjTd6Pfapp55SKBRK+IpEmF3IVGxzTElpBTtN0QGqa8u3c2gI5elY6RxJSjvYCcquwn6UalCyZ+8BDSpI7TkU5AaFNQfW6bS2D3vNtDJLCbvZHuj8+te/1vz583X//ferrq5OY8eO1cyZM7V3795e71NcXKyGhob41+7du+0epi9FjfTmsXw9f7hQbx7L73UGZnpRm5ZWHlRFuCOtx0+1vgeZO1E4RkfL5snklaR0vFFIhyPDArOrsB+lGpS88Zdd+uNbmxTJ77sUMugNClOdfWSWEnaxvRj5e9/7nm699VZ95StfkSQtW7ZMq1at0hNPPKGFCxcmvU8oFFJVVZXdQ/O1dBsAdt0cc/3RfD1+qLjf35FufQ8yc6JwjE5ELtSA4ztVNOmI1m6t0aRtD0s5sKuwH6XSXTkmlWMuOnuY/vq3xsD21kl19pFZStjF1hmd48eP6+2339aMGTNO/cK8PM2YMUNr167t9X6tra0666yzNHz4cF1zzTXatKn3/vXt7e1qaWlJ+Aq6WAPApmji5euvkDi2OebtZa191u2EZFQZPqnxETbSdEwoT0U3jdaj5nt647x7tGr8k2qNJG4q2Rqp0arxT7BCxWWx7srpiOQP1OBIfrfbBiiSP1DrtuzU82+8r//76tv6z+f/W9vqgzWz8WHZJB2O1CSp0OnELCXsZuuMzr59+xSNRlVZmRipV1ZW6i9/+UvS+4wePVpPPPGELr74YjU3N2vp0qWaMmWKNm3apDPOOKPH8YsXL9YDDzxgy/i9yIoGgLG6nXuahigkk/ACFAt+FpS30E/HIcka/+XKrsJ+1Vt35d60HT+hz/+P8QqFQjrS1q5DrUe1dvPOHscFsbeOCYW15oKHNLvupvhrVPxnzFLCAZ5bdTV58mTdcMMNGjdunKZOnapnn31WQ4cO1Y9//OOkxy9atEjNzc3xrw8++MDhETvrVAPA3j8dpVJI3FvdTkU4qqWVbAnhpEc3fSlp87/YrsJ/HfY51Z9+OW8EHnPusErdPOt/aML5Z6d0/NH24xo+tEznnVGl93bV93nsS3Vb1GGCs+xxR/XVWjX+CWYp4QpbZ3TKy8sVDofV1JQ4FdvU1JRyDc7AgQP1yU9+Utu3b0/684KCAhUUBHfFQnepFginclzXuh12NHfH8nHz3B4CspAXCunMitP1xl/+v36PjRUxp7I8ve34Ca3fslOTLxhlxTA9gVlKuMXWGZ38/Hxdcsklqq2tjd/W0dGh2tpaTZ48OaXHiEajeu+991RdXd3/wTkg1QLhVI+L1e3MOu2YLiskyHESQU4wxIqT+9J1ZVWqy9M3bN8TqFkdiVlKuMP21NX8+fP105/+VMuXL9eWLVt0++2368iRI/FVWDfccIMWLVoUP/473/mO/vSnP2nnzp2qq6vTl770Je3evVu33HKL3UP1hf4aAFJI7A+xuhz4XyrFydPGjo6vpkp1eXr7iZOB75gMOMH25eXXXnutPvroI913331qbGzUuHHj9MILL8QLlPfs2aO8vFPx1sGDB3XrrbeqsbFRQ4YM0SWXXKI///nPuuCCC+weqi9QSOx/pXPDbMgZML0VJyfb5HNY+RBF8geo7fjJfh83yB2TAaeEjAnW3GhLS4tKSkq0+9FHVVxY6PZwbJO8j85JLShvoZDYwwhygi22v9WRtvY+++Ks27Ij6aqr7v7XFZdktcM64CdtrS1a+Omham5uVnFx/73eUsXu5T5FIbH/EOQEX14olFJgMuH8kdqwfU+fszpB75gMOMVzy8uROgqJ/YUgBzF5oZBmjO87Hd+1rgdA5gh0AMAFsbqe7iu2igoLAtUwEHAbqSvAAaVzw1LvO5kgR507rFKjaipSqusBkBkCHcBm1OagL6nW9QDIDKkrwGYEOQDgHmZ0ABuRskLQpbqkHnALgY6PRI1YTg7AM7bVN6XUJBFwE4GOTyRvEBjVgvJmGgR6FLU5CLJt9U1aue7dHre3HmvXynXvsnIMnkGNjg/UtkZ0T9MQNUUTL9feaJ7uaRqi2taISyNDXwhyEFQdxmj1O1v7PGb1O1sDtykp/IlAx+OiRlqyr+TjXawS81Sxfa6W7CtWlNcTAA6p33cwIV2VTOuxdjYlhScQ6HhcXVv+x+mq5MU4RiE1RQeori3f2YGhT+xODqd0GKMPPjqgv3zQoA8+OuDILEqqm42yKSm8gBodh2RaSLzvZGpvmKkeB2eQtoIT3CoGHhwp6P+gNI4D7ESg44BsConLB0RT+h2pHgcgGNwsBh5WPkRFhQV9pq/YlBReQerKZtkWEo+PHFdlOKqQkk9Hh2RUGT6p8ZHjlo0Z2Vk+bp7bQ0DAuV0MnBcKadrY0X0ew6ak8AoCHRtZUUgcDkkLyps/foTEA2PfLyhvoZ+OR1CbAyd4oRiYTUnhF6SubHSqkDi5roXElxX2PiMzvahNS3WwR/qrIhzVgvIW+ugAOcYrxcBsSgo/INCxkZWFxNOL2jRtcBudkT2MBoFwipeKgdmUFF5HoGMjqwuJwyH1OfMDIDekUgw8OJIvY4z+8kEDMy3IaQQ6NooVEu+N5sVrcroKyagiHKWQGEBaYsXAyVZdxUQ7jH7333Xx74O0B1XIRFVzYJ0GtzXpSKRSH5ZNkglRH4fkCHRsFCskvqdpiEIyCcEOhcQAshErBu7eRyeSP0Btx0+q7fiJhOODsgfVqIaVmrr52zqt7cP4bYcjNVpzwUPaUX21iyOzFsGcdQh0bEYhce6gPgdO614MPKggX398a5Okk73eZ/U7WzWqpsKXaaxRDSs1u+4mqdsK1KK2Bs2uu0mrxj8RiGAnV4I5pxDoOGDa4DYV5XXozWP5CimkSwvbdWkhhcRBQu8cuKVrMfAHHx1Iedm53wqIQyaqqZu/LSUpBIjNmE/dfK92Vs3y9cxHrgRzTiLQsVmyrsj/dXhQSl2RM5HpVhNAV0yb+5NXlp3boebAuoQZju5CMjqtrV41B9ap/vTLHRyZdXIlmHMagY6NYl2Ru/cDjHVFXqqDlgY72Ww1gcyVzg1Lm9K/n1eDCabN/ctLy86tNritydLjvCgXgjk3EOjYpL+uyCEZLdlXrGmD2yyZcXE6qMIpmdTmeDWYYNrc34K8B9WRSGoF1Kke50W5EMy5gS0gbHKqK3LyKKZrV+RsWbHVBJwTCyaKun1yiwUToxpWujKu/qbNJWnq5nsVMmwg61VB3oPqw7JJOhypSdqqQ+r8V3s4Mkwflk1yeGTWyYVgzg0EOjaxsityf5wMqpAo3b2tvBxMxKbNe3sL7DptDu8K6h5UJhTWmgse6vz/Xj7QrbngQU+kfzOVC8GcG0hd2cTqrsh9cTKowimZbPng5Rw80+bBEdQ9qHZUX61V45/okfZtjdRozQUP+j6tGgvmZtfdFC9xiP8sIMGcGwh0bOJkV2Qngypkx8vBBNPmwRLUPah2VF+tnVWzPFnIb4WgB3NuINCxSTZdkdNdIs5WE/7h5WAiNm1e1NaQ8Ekyxiik1kgN0+ZwnQmFA73qKOjBnNMIdGyUSVfkTJaIs9WEf3g5mGDaPDd0GBO4lFYQBT2YcxKBjs2mF7Vp2uC2lGZoslkizlYTzsqkPkfyVjCRrI8P0+bBtq2+qcfeWEHa7BNIhkDHAeGQdFlh32kjK/rupBNUWY2OzKnzQjDRXx8fps2DZ1t9U9LdzoOy2aefebV5aFAQ6HjEqSXiyXVdIt5X0JRKUGW1XOzInO0Gnm4GE6k2BWTaPDg6jNHqd7b2eYyfN/v0M682Dw0S+uh4hF+XiMfSbU3RxH9KsXRbbWvEpZHZJ93eOb2J5eD/Ouxzqj/9csfSVV7t4wP71O87mPJmn3COV5uHBg2Bjkf4cYl4LnZkzrQ2xytoCpibgrzZp1/xocM5BDoeEVsinmwljtT5D78yfNJTS8RzsSOzF4KckIlq2P7XdV79sxq2//W0Xgi93McH9gnyZp9+le2HjmxeB3INNToe4ccl4n5Nt/lZtvl8L/fxgX2CvNmnX2XzoYO6nvQwo+Mh04vatLTyoCrCHQm3V4SjWlrpvd3H/Zhuy4ZVtTmZsiKfz146uSnIm336VaYfOqjrSR+BjsdML2rTH85q0k9r9mlxxUH9tGaf/nDWXs8FOZI/022Zcrs2x6p8fi5sjIjkgrrZp19l8qGDup7MkLryIDeWiGfCj+m2TLgd5EjWbgbqhT4+cEdQN/v0o0yah3p5U2AvI9BBVujI7Ayri4hpCpi7grrZpx+l+6GDxQSZIdBB1tzsyOwEt2dzJHuKiNlLB3BfOh86WEyQGQIdWMIv6bZ0lc4NS5vcHoW3NwMFkJ1UP3TwOpAZipGBXnihNieGImIAvA5khkAHSMJLQU5MLJ/fGqlOuL01UhPfnwpIVYcx+uCjA/rLBw364KMD6jABamEeYL29DrQNLNW6cxdoZ9Usl0bmXSFjgvWvu6WlRSUlJdr96KMqLix0ezjwqeXj5rk9hF6x0zGyta2+Savf2ZrQQLCosEDTxo5mmblPhExUl27/vj656ycqPHFqjzI/Nw5sa23Rwk8PVXNzs4qLiy17XGZ0gG4yCXKcbMfuxmagCI5t9U1aue7dHl2SW4+1a+W6d7WtnhU7fjCy8XlN/usSRU4kbsRK48CeKEYGusgkyKEdO/yiwxitfmdrn8esfmerRtVU0FvHw/prHGgU0tTN92pn1Sw+CIkZHSAuky0eaMcOP6nfd7DP/a6kzpmd+n0H+zwG7sp2Q9BcQ6ADKLPiY9qxw2+OtPUd5KR7HNxB48D0EOjksKiR3jyWr+cPF+rNY/mKBqosPXWZrrDiUxX8ZnCkoP+D0jgO7qBxYHqo0clRta2RHts2VIajWlDenHPbNmS6jJxPVfCbYeVDVFRY0Gf6qqiwc/8reBeNA9PDjE4Oqm2N6J6mIWqKJl7+vdE83dM0RLWtEZdG5pzSuWGVzg1ntYycT1Xwm7xQSNPGju7zmGljR1OI7HE0DkwPgU6OiRppyb6Sjz8DJH+CLNlXHPg01qObvpR1Q8DYp6qeFTqdjEI6HBnGpyp4yrnDKnX1pItVVJiYnioqLNDVky6mj45P0EA0daSuckxdW35Cuqo7o5CaogNU15YfyL2rJOuaAcY+Vc2uu0lGoYQpZD5VIRUdxqh+30EdaWvX4EhnysiJ2ZRzh1VqVE2FK78b1klnQ9BcRqCTY/adTO0JkOpxfmN1x+PYp6rufXRaIzVac8GDfKpCr9zuTpwXCmn40DLbfw/sleqGoLmMQCfHlA9Ibalzqsf5RbxHjg07kfv9UxVbSjgv1p24u1h3YlJIgHUIdHLM+MhxVYaj2hvNS1pbEpJRRTiq8ZHgpK2c2KDTr5+q6OrsPLoTA86iGDnHhEPSgvJmSeqxLDH2/YLyFoUD8vrqxV3IvYKuzu6gOzHgLAKdHDS9qE1LKw+qItyRcHtFOKqllQcD0UcntnycICc5ujq7h+7EgLNIXeWo6UVtmja4TXVt+dp3MqzyAZ3pqiDM5BDg9C/W1bk3Xbs6+zEl52V0Jwac5ciMzmOPPaazzz5bkUhEEydO1BtvvNHn8b/97W91/vnnKxKJaMyYMfrDH/7gxDBzTjgkXVZ4XLNOO6bLCv0f5MQaABLk9I+uzu6JdSfuC92JAevYHuj8+te/1vz583X//ferrq5OY8eO1cyZM7V3796kx//5z3/W9ddfr5tvvlkbNmzQnDlzNGfOHL3//vt2DxU+xixOeujq7B66EwPOChljbO2BO3HiRF122WX60Y9+JEnq6OjQ8OHD9fWvf10LFy7scfy1116rI0eOaOXKU4WQkyZN0rhx47Rs2bIex7e3t6u9/VQuu6WlRcOHD9fuRx9VcWGhDWcEryHISV/IRPWVl8f3u1fOk59+m6XmWeirIaDbfXQAr2lrbdHCTw9Vc3OziouLLXtcW2t0jh8/rrfffluLFi2K35aXl6cZM2Zo7dq1Se+zdu1azZ8/P+G2mTNnasWKFUmPX7x4sR544AHLxgz/iAc4NvTGCTq6Otuvv0CG7sSAM2xNXe3bt0/RaFSVlYmfTiorK9XY2Jj0Po2NjWkdv2jRIjU3N8e/PvjgA2sGD89iRZU12CvHPrGGgN2XkccaAm6r76x9inUnPn94tYYPLSPIAWzg+1VXBQUFKihgdUKuIMCxlt+7OnsRDQEBb7E10CkvL1c4HFZTU+LKjaamJlVVVSW9T1VVVVrHIzeQprKPX7s6e1U6DQHZawqwn62pq/z8fF1yySWqra2N39bR0aHa2lpNnjw56X0mT56ccLwkvfjii70ej2AjTQW/oSEg4C22p67mz5+vefPm6dJLL9WECRP0yCOP6MiRI/rKV74iSbrhhhs0bNgwLV68WJJ05513aurUqfrud7+r2bNn61e/+pXeeust/eQnP7F7qPAYAhz4EQ0BvYsNbHOT7YHOtddeq48++kj33XefGhsbNW7cOL3wwgvxguM9e/YoL+/UxNKUKVP0i1/8Qvfee6/+6Z/+Seeee65WrFihiy66yO6hwiNyOU3FC7H/xRoC9pW+oiGg89jANnfZ3kfHaS0tLSopKaGPjg+Vzu18Q8/VWRxeiIMjtuqqN1dPupheOQ6KbWDbfW+32HesMvQGu/rosKknPCE2i5PLQQ47iQfHucMqdfWki3ts9VBUWECQ47AgbmAbMlEN2/+6zqt/VsP2v+6rsbvB98vL4W+5nKaK6e+F2CikqZvv1c6qWaSxfISGgN4QtA1smflNHzM6cAWrqU6JvRD39vbX9YUY/kJDQPcFaQNbZn4zw4wOHEeAk8hrL8QURCNIgrKBLTO/mSPQgWNIUyXnpRdipsURNB+WTdLhSE2/G9h+WDbJhdGlLmgpOCeRuoLtSFP1LfZC3PNzWiejkA5Hhtn+Qsy0OIIotoGt1HMuxE8b2Hpt5tdPCHRgq1xfTZUKL7wQB3FlChAThA1svTTz6zekrmAL0lTpib0Qd08btUZqtOaCB21/IWZaHEHn9w1sg5KCcwOBDiwTa/gn5W7Tv2y4+ULMtDhygZ83sI3N/M6uu0lGoYRgx08pODcQ6MAS1OBYw60XYqbFAe9ze+bXrwh0kBVSVMHAtDhgL6vaNvg9BecGAh1kJNf3pfKDdF5YmRYH7GN12wY/p+DcQKCDtJGm8r5MXliZFges13VD0a5ibRv8surLzwh0kJLl4+ad+oY0ladl88LKtDhgHboZewOBDvoUX0lFcOMLVrywMi3uPrbhCAbaNngDgQ56RYrKf3hh9T+24fCv7gHq4GMNKd2Ptg32ItBBD/E0FbM4vkM/HH+jnsO/kgWoR/NPT+m+tG2wF4EOJCU2+yPA8S/64fgX9Rz+1VuAWnj8QPyWZDvZ0bbBGQQ66JzBIbgJBPrh+BdpR3/qP0DtZJQY7NC2wTkEOjksYSUVAsGufjh+Lo71y9hTTSee0/D/JMmz55Fr+g9QOx0deLoGndgfv522Dc4h0Mkh7EWVG6zuh+Pn4lg/jT3VdOK43f+pcbv/07PnkWtSDVBfvfBBtUaqPR9wBxGBTg6gi3Husaofjp+LY60cuxOzQv2nHRNTH25eA7/MksXYOd5UA9TWSDUpR5cQ6AQcS8RzV7b9cPxcHGvl2J2aFeo77dizmNWta+CnWTLJ/vFSF+d9eW4PANYrnRuOfxHkIFOx2oNkq0WkxOJYr7Fq7LFZoaJuNRix2ZRRDSstGnGnWNqxNVLdbbzJOX0NnP57dBUyUQ3b/7rOq39Ww/a/rpCJ9nsfJ8YbC1ClnmE1BcfewIxOgJCigpX83JPHirG7NaPVNe14TsP/07jd/9nvfZy4Bqn9Pb6ttoHFGty+z9IUUSazMk5eP/aJ8zYCnYBg9gZW83NPHivG7uZy765px1QCHSeuQWp/jw/1v9Z/Pn6bFSmiTGutnL5+7BPnXQQ6PsYqKtjJz7UHH5ZN0rGBQxQ5cTDjRm1emNHy0jXI5DyzLZjOZlbGjevHPnHeRI2OD3Wtv4l9AVbzc+3ByMbnFTlxMOnPzMf/7W/sXpjR8tI1yOQ8Y8HZ1M33plRT0102tVZWXr9M6oPgHczo+AwpKjjJj7UHp2YBei/ibRtYpp1Vs/p8HK/MpnjlGvT39+hNNimibGZlrLp+fltlhp4IdHyAFBXc5Lfag1Q61RaeONDvG69dXaYz4YVr0NffIxWZpIiymZWx4vr5uY8UTiHQ8aAegQ37UMFlfqo9sLI2wyuzKZI3rkFvf49UZJL6ynZWJpvr5+c+UkhEoOMxpKaA7FhdW+OF2RQv6f73OFpQrs9svENF7Y2Wp/ismJXJ9PqxyWpwEOh4BD1wAGvYUVvjhdkUL+n+91hz4f+2LcVnxaxaJtfPC6vuYA0CHRdRewNYz0u1NbnC7hSfG7NqXlh1B2sQ6LiEFBVgHy/V1uQKu4MRp2fVvLLqDtkj0HEQMziAc6itcV6QUnzMDAYHgY4DqL8B3BGkN144j5nBYCDQsRkpKiA7IRNlVgauYWbQ/wh0bLB83LxT39ADB8gYXWnhBcwM+ht7XVmodG44McgBkLFYV9qibr1MYl1pRzWsdGlkAPyEGR2LLB83j9kbwCJ0pQVgFQKdDFF7A9iHrrQArEKgkwaWhwPOoCstAKsQ6KSIGRzAHslWVdGV1n6sZkOuINDpA6unAHv1uqrqE/9KV1obsZoNuYRVV0mUzg0npKkAWK/PVVUbbtHW6v8pqWc5Ml1ps8NqNuQaAp1uYikq0lSAffpbVSVJoxtW6A/jH1drpDrh562RGq0a/0TgZx5CJqph+1/XefXPatj+1xUyUUses7+/+9TN91ryuwCvIHUlUlSA01JdVXUs/3Q9+em6nKslsSu1xGo25KKcDHRYPQW4K51VVbnWlTaWWlK32qRYaimb2SxWsyEX5WSgQ3ADuItVVcnZ3SiRvztyUc4EOiwPB7zjw7JJrKpKwu7UEn935KJAFyPHVk8R5ADeYkJhrbngoc7/Z1VVnN2pJf7uyEWBndEp/QeCG8ApmTSf21F9tVaNf6JH0W1rpEZrLngw8KuqknEitcTfHbkmsIHO/9lyrSJFbo8CCL5sVgjtqL5aO6tm5dyqqt44lVri745cEthAB4D9rFghlGurqvoSSy3NrrtJRqGEYMfq1BJ/d+SKQNfoALAPzefsEUst5WqjRMBqzOgAyAjN5+xDagmwDoEOgIzQfM5eqaaW2IUc6BuBDoCM0HzOfexCDvSPGh0AGYmtEOpZodPJKKTDkWE0n7MJu5ADqSHQAZARms+5h0JwIHUEOgAyxgohd8QKwZPPpSUWggdVyEQ1bP/rOq/+WQ3b/zpBHXpFjQ6ArLBCyHm5XghObRLSYeuMzoEDBzR37lwVFxertLRUN998s1pbW/u8z7Rp0xQKhRK+brvtNjuHCSBLsRVCfx32OdWffjlBjs1yuRCc2iSky9ZAZ+7cudq0aZNefPFFrVy5Uq+++qq++tWv9nu/W2+9VQ0NDfGvJUuW2DlMAC4iBZG+XC0EpzYJmbAtdbVlyxa98MILevPNN3XppZdKkn74wx/qqquu0tKlS1VTU9PrfQcNGqSqqqqUfk97e7va29vj37e0tGQ3cACOIQWRGSe3ivASmlQiE7bN6Kxdu1alpaXxIEeSZsyYoby8PK1fv77P+z7zzDMqLy/XRRddpEWLFuno0aO9Hrt48WKVlJTEv4YPH27ZOQCwDymI7ORiIXiu1yYhM7bN6DQ2NqqioiLxlw0YoLKyMjU2NvZ6vy9+8Ys666yzVFNTo3fffVff+ta3tHXrVj377LNJj1+0aJHmz58f/76lpYVgB/C4/lIQRiFN3XyvdlbNCtyshJVyrRA8l2uTkLm0A52FCxfq4Ycf7vOYLVu2ZDygrjU8Y8aMUXV1taZPn64dO3Zo1KhRPY4vKChQQUFBxr8PgPNIQVgnl3Yhj9UmFbU1JKTrYoxCao3UBK42CdlJO9C5++67deONN/Z5zMiRI1VVVaW9e/cm3H7y5EkdOHAg5fobSZo4caIkafv27UkDHQD+QwoCmcjV2iRkJ+1AZ+jQoRo6dGi/x02ePFmHDh3S22+/rUsuuUSS9PLLL6ujoyMevKRi48aNkqTq6uq+DwTgG6QgkKlYbVL3IvbWSI3WXPBgIGuTkB3banQ+8YlP6Morr9Stt96qZcuW6cSJE7rjjjt03XXXxVdc1dfXa/r06Xr66ac1YcIE7dixQ7/4xS901VVX6fTTT9e7776rb3zjG7riiit08cUX2zVUAA4jBYFs5FptErJja2fkZ555RnfccYemT5+uvLw8ff7zn9cPfvCD+M9PnDihrVu3xldV5efn66WXXtIjjzyiI0eOaPjw4fr85z+ve++9185hAnAYKQhkK5dqk5CdkDGm58cpH2tpaVFJSYn+7eWPFCkqdns4APqQvI/OMFIQPhEyUWZVYJm21hYt/PRQNTc3q7jYuvdv9roC4BpSEP5Fs0f4BYEOAFeRgvCfWLNHdauvijV7DGrDQviTrXtdAQCChf2m4DcEOgCAlMWaPSbfTjSx2SPgBQQ6AICU0ewRfkONDgCgh95WVNHsEX5DoAMASNDXiqqdVbNo9ghfIXUFAIiLragq6rbpamxF1cjG57Xmgock9SxHptkjvIhABwAgKfUVVTurZmnV+CfUGkncg7A1UsPScngOqSsAgKRTK6p603VFlVXNHumuDLsR6AAAJKW/oirbZo90V4YTSF0BACSlvlLKihVV/dUCjWpYmfXvACQCHQDAxz4sm6TDkZokFTqdjEI6HBmW9YoquivDSQQ6AJCBkIlq2P7XdV79sxq2//VAvCmbUNiRFVV0V4aTqNEBgDQFubZkR/XVWjX+iR7n1xqp0ZoLHrTk/OiuDCcR6ABAGnJh526rVlT1hu7KcBKBDgCkqL/aEqNQvM+M35dIZ7uiqi+xWiC6K8MJ1OgAQIpSrS0Zu+ungardsZpTtUCAxIwOAKQs1ZqRqVv+Of7/QandsZoTtUCARKADACnLpGYkSLU7VrO7FgiQCHQAIGX915Yo8LU7VrOzFgiQqNEB4BF+6EvTV22J1DPIOXU7fWEAtzCjA8B1fupL01ttSSroCwM4j0AHgKv82Jeme23JoPa9CQXIvaEvDOA8Ah0ArvFzX5qutSUhE9X4Xf+HvjCAB1GjA8A1QdnziL4wgHcR6ABwTZD2PIrV7rRGqhNub43UeDL9BuQKUlcAXOPlPY9CJpp2fxf6wgDeQ6ADwDVe3fMom1Vg9IUBvIXUFQDXeLG2JbYKrKjb0vHYKrBRDSsdGwuA7BHoAHCVl2pb+lsFJklTN9/ryWaGAJIjdQXAdV6pbYmtAutN11VgpKcAfyDQAeAJXqhtCdIqMACdSF0BwMe8vAoMQGYIdADgY7FVYMk27JQ6K3cOR4bR4RjwEQIdAPiYF1eBAcgOgQ4AdOGlVWAAskcxMgB045VVYACyR6ADAEl4YRUYgOyRugIAAIFFoAMAAAKLQAcAAAQWgQ4AAAgsAh0AABBYBDoAACCwCHQAAEBgEegAAIDAItABAACBRaADAAACi0AHAAAEFoEOAAAILAIdAAAQWAQ6AAAgsAh0AABAYBHoAACAwCLQAQAAgUWgAwAAAotABwAABBaBDgAACCwCHQAAEFgEOgAAILAIdAAAQGAR6AAAgMCyLdB56KGHNGXKFA0aNEilpaUp3ccYo/vuu0/V1dUqLCzUjBkztG3bNruGCAAAAs62QOf48eP6whe+oNtvvz3l+yxZskQ/+MEPtGzZMq1fv16DBw/WzJkz1dbWZtcwAQBAgA2w64EfeOABSdJTTz2V0vHGGD3yyCO69957dc0110iSnn76aVVWVmrFihW67rrrkt6vvb1d7e3t8e+bm5slSW1HDmcxegAA4KTY+7YxxtLHtS3QSdeuXbvU2NioGTNmxG8rKSnRxIkTtXbt2l4DncWLF8eDqq7+5bMjbRsrAACwx/79+1VSUmLZ43km0GlsbJQkVVZWJtxeWVkZ/1kyixYt0vz58+PfHzp0SGeddZb27Nlj6R/K61paWjR8+HB98MEHKi4udns4juG8Oe9cwHlz3rmgublZZ555psrKyix93LQCnYULF+rhhx/u85gtW7bo/PPPz2pQ6SgoKFBBQUGP20tKSnLqH0hMcXEx551DOO/cwnnnllw977w8a8uH0wp07r77bt144419HjNyZGYpo6qqKklSU1OTqqur47c3NTVp3LhxGT0mAADIbWkFOkOHDtXQoUNtGciIESNUVVWl2traeGDT0tKi9evXp7VyCwAAIMa25eV79uzRxo0btWfPHkWjUW3cuFEbN25Ua2tr/Jjzzz9fzz33nCQpFArprrvu0oMPPqj/+q//0nvvvacbbrhBNTU1mjNnTsq/t6CgQPfff3/SdFaQcd6cdy7gvDnvXMB5W3veIWP1Oq6P3XjjjVq+fHmP21955RVNmzat85eHQnryySfj6TBjjO6//3795Cc/0aFDh/R3f/d3+o//+A+dd955dgwRAAAEnG2BDgAAgNvY6woAAAQWgQ4AAAgsAh0AABBYBDoAACCwAhHoPPTQQ5oyZYoGDRqk0tLSlO5z4403KhQKJXxdeeWV9g7UYpmctzFG9913n6qrq1VYWKgZM2Zo27Zt9g7UYgcOHNDcuXNVXFys0tJS3XzzzQltC5KZNm1aj+t92223OTTizDz22GM6++yzFYlENHHiRL3xxht9Hv/b3/5W559/viKRiMaMGaM//OEPDo3UWumc91NPPdXjukYiEQdHa41XX31Vn/3sZ1VTU6NQKKQVK1b0e5/Vq1dr/PjxKigo0DnnnJPyBspeku55r169usf1DoVCfW4T5DWLFy/WZZddptNOO00VFRWaM2eOtm7d2u/9/P78zuS8rXp+ByLQOX78uL7whS+k3VjwyiuvVENDQ/zrl7/8pU0jtEcm571kyRL94Ac/0LJly7R+/XoNHjxYM2fOVFtbm40jtdbcuXO1adMmvfjii1q5cqVeffVVffWrX+33frfeemvC9V6yZIkDo83Mr3/9a82fP1/333+/6urqNHbsWM2cOVN79+5Nevyf//xnXX/99br55pu1YcMGzZkzR3PmzNH777/v8Mizk+55S51t8rte1927dzs4YmscOXJEY8eO1WOPPZbS8bt27dLs2bP1qU99Shs3btRdd92lW265RX/84x9tHqm10j3vmK1btyZc84qKCptGaL01a9boa1/7mtatW6cXX3xRJ06c0Gc+8xkdOXKk1/sE4fmdyXlLFj2/TYA8+eSTpqSkJKVj582bZ6655hpbx+OUVM+7o6PDVFVVmX//93+P33bo0CFTUFBgfvnLX9o4Quts3rzZSDJvvvlm/Lbnn3/ehEIhU19f3+v9pk6dau68804HRmiNCRMmmK997Wvx76PRqKmpqTGLFy9Oevw//MM/mNmzZyfcNnHiRPOP//iPto7TaumedzrPeb+QZJ577rk+j1mwYIG58MILE2679tprzcyZM20cmb1SOe9XXnnFSDIHDx50ZExO2Lt3r5Fk1qxZ0+sxQXl+d5XKeVv1/A7EjE6mVq9erYqKCo0ePVq333679u/f7/aQbLVr1y41NjZqxowZ8dtKSko0ceJErV271sWRpW7t2rUqLS3VpZdeGr9txowZysvL0/r16/u87zPPPKPy8nJddNFFWrRokY4ePWr3cDNy/Phxvf322wnXKS8vTzNmzOj1Oq1duzbheEmaOXOmb66rlNl5S1Jra6vOOussDR8+XNdcc402bdrkxHBdFYTrnY1x48apurpaf//3f6/XX3/d7eFkpbm5WZL63LE7iNc7lfOWrHl+52ygc+WVV+rpp59WbW2tHn74Ya1Zs0azZs1SNBp1e2i2ieWxKysrE26vrKz0TY67sbGxxzT1gAEDVFZW1uc5fPGLX9TPf/5zvfLKK1q0aJF+9rOf6Utf+pLdw83Ivn37FI1G07pOjY2Nvr6uUmbnPXr0aD3xxBP6/e9/r5///Ofq6OjQlClT9Le//c2JIbumt+vd0tKiY8eOuTQq+1VXV2vZsmX63e9+p9/97ncaPny4pk2bprq6OreHlpGOjg7ddddduvzyy3XRRRf1elwQnt9dpXreVj2/09rU00kLFy7Uww8/3OcxW7Zs0fnnn5/R41933XXx/x8zZowuvvhijRo1SqtXr9b06dMzekwr2H3eXpXqeWeqaw3PmDFjVF1drenTp2vHjh0aNWpUxo8Ld02ePFmTJ0+Ofz9lyhR94hOf0I9//GP967/+q4sjgx1Gjx6t0aNHx7+fMmWKduzYoe9///v62c9+5uLIMvO1r31N77//vl577TW3h+KoVM/bque3ZwOdu+++O74HVm9Gjhxp2e8bOXKkysvLtX37dlcDHTvPu6qqSpLU1NSk6urq+O1NTU3xHePdkup5V1VV9ShMPXnypA4cOBA/v1RMnDhRkrR9+3bPBTrl5eUKh8NqampKuL2pqanXc6yqqkrreC/K5Ly7GzhwoD75yU9q+/btdgzRM3q73sXFxSosLHRpVO6YMGGCLwOFO+64I76Y4owzzujz2CA8v2PSOe/uMn1+ezbQGTp0qIYOHerY7/vb3/6m/fv3JwQAbrDzvEeMGKGqqirV1tbGA5uWlhatX78+7RVrVkv1vCdPnqxDhw7p7bff1iWXXCJJevnll9XR0REPXlKxceNGSXL9eieTn5+vSy65RLW1tZozZ46kzqne2tpa3XHHHUnvM3nyZNXW1uquu+6K3/biiy8mfBryukzOu7toNKr33ntPV111lY0jdd/kyZN7LC/22/W2ysaNGz35PO6NMUZf//rX9dxzz2n16tUaMWJEv/cJwvM7k/PuLuPnd9blzB6we/dus2HDBvPAAw+YoqIis2HDBrNhwwZz+PDh+DGjR482zz77rDHGmMOHD5t77rnHrF271uzatcu89NJLZvz48ebcc881bW1tbp1G2tI9b2OM+bd/+zdTWlpqfv/735t3333XXHPNNWbEiBHm2LFjbpxCRq688krzyU9+0qxfv9689tpr5txzzzXXX399/Od/+9vfzOjRo8369euNMcZs377dfOc73zFvvfWW2bVrl/n9739vRo4caa644gq3TqFfv/rVr0xBQYF56qmnzObNm81Xv/pVU1paahobG40xxnz5y182CxcujB//+uuvmwEDBpilS5eaLVu2mPvvv98MHDjQvPfee26dQkbSPe8HHnjA/PGPfzQ7duwwb7/9trnuuutMJBIxmzZtcusUMnL48OH481eS+d73vmc2bNhgdu/ebYwxZuHChebLX/5y/PidO3eaQYMGmW9+85tmy5Yt5rHHHjPhcNi88MILbp1CRtI97+9///tmxYoVZtu2bea9994zd955p8nLyzMvvfSSW6eQtttvv92UlJSY1atXm4aGhvjX0aNH48cE8fmdyXlb9fwORKAzb948I6nH1yuvvBI/RpJ58sknjTHGHD161HzmM58xQ4cONQMHDjRnnXWWufXWW+Mvpn6R7nkb07nE/J//+Z9NZWWlKSgoMNOnTzdbt251fvBZ2L9/v7n++utNUVGRKS4uNl/5ylcSgrtdu3Yl/B327NljrrjiClNWVmYKCgrMOeecY775zW+a5uZml84gNT/84Q/NmWeeafLz882ECRPMunXr4j+bOnWqmTdvXsLxv/nNb8x5551n8vPzzYUXXmhWrVrl8Iitkc5533XXXfFjKysrzVVXXWXq6upcGHV2Ysumu3/FznXevHlm6tSpPe4zbtw4k5+fb0aOHJnwPPeLdM/74YcfNqNGjTKRSMSUlZWZadOmmZdfftmdwWco2fl2f50O4vM7k/O26vkd+ngAAAAAgZOzy8sBAEDwEegAAIDAItABAACBRaADAAACi0AHAAAEFoEOAAAILAIdAAAQWAQ6AAAgsAh0AABAYBHoAACAwCLQAQAAgfX/Az8gXDhX6X1QAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''绘图'''\n",
    "plot_decision_boundary(poly_kernel_svc,axis=[-1.5,2.5,-1.0,1.5])\n",
    "plt.scatter(X[y==0,0],X[y==0,1])\n",
    "plt.scatter(X[y==1,0],X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
